2012-06-19 187 views
3

我正在學習SCJP 6學習指南Exam_310-065 異常宣言和公共接口並在第5章,它說「未處理的檢查異常的拋出異常」在Java中

「每方法必須通過提供catch子句來處理所有檢查的異常,或者列出每個未處理的檢查異常作爲拋出的異常。「

我們如何列出每個未處理的檢查異常作爲拋出的異常,以及它在代碼中的外觀如何?謝謝。

回答

5

它看起來像這樣:

public void foo() throws SomeCheckedException, AnotherCheckedException 
{ 
    // This method would declare it in *its* throws clause 
    methodWhichThrowsSomeCheckedException(); 

    if (someCondition) 
    { 
     // This time we're throwing the exception directly 
     throw new AnotherCheckedException(); 
    } 
} 

更多信息請參見section 8.4.6 in the JLS

+0

謝謝喬恩的示例代碼和信息。 –

2

舉例來說,如果您有:

public void doSomething() throws SomeException { 
    ... 
    throw new SomeException(); 
} 

你想調用doSomething,你必須要麼catch異常,或將其作爲也容易引發SomeException的申報方法,因而傳播它在調用堆棧進一步:

public void doSomethingElse() throws SomeException { 
    doSomething(); 
} 

或者

public void doSomethingElse() { 
    try { 
     doSomething(); 
    } 
    catch (SomeException) { 
     // Error handling 
    } 
} 

考慮到RuntimeException s未檢查異常,所以它們是此規則的一個例外。

+0

太棒了!謝謝先生們的解釋。 –