2012-07-19 15 views
3

當代碼拋出很多異常和句柄相同時,哪個選擇更好?當代碼拋出很多異常和句柄相同時,哪個選擇更好?

try{ 
}catch(ExceptionOne e1) 
{ 
someHandle() 
} 
catch(ExceptionTwo e2){ 
someHandle() 
} 
catch(ExceptionThree e3) 
{ 
someHandle() 
} 

try{ 
}catch(Exception e1) 
{ 
someHandle() 
} 

一些書meationed是encoutering異常時,試圖抓住它清楚,不要嘗試cacth所有的異常。

那哪個更好?

+0

使用一般漁獲只在記錄日誌。參見:http://codeisland.org/2012/catching-practice/ – 2012-07-19 00:12:40

+0

如果所有異常都是相關的,如果它們是繼承子層次結構的一部分,那麼只要它不是太籠統就可以捕捉到共同的祖先爲您的上下文(例如捕獲IOExceptions而不是EOFException,FileNotFoundException等)。 – 2012-07-19 00:34:00

回答

8

第一個比較好。第二個捕獲所有異常,並且可能包含一些您不想捕獲的異常。

如果您升級到Java 7,您可以使用catch block that can catch more than one type of exception,這是一個更清潔的解決方案。

try { 
    // Something that might throw. 
} 
catch(ExceptionOne | ExceptionTwo | ExceptionThree e) { 
    someHandle() 
} 
+0

謝謝,我知道。 – jiafu 2012-07-19 00:23:23

-1

如果你不關心例外的是什麼,你可以只是把一般的「例外:」

try { 
    ... 
} catch (Exception e) { 

    } 
+1

如果你不在乎?你真的應該在乎,並且不鼓勵這種對所有例外的捕獲。 1+給@MarkByers誰對原始問題有更好的答案。 – 2012-07-19 00:22:12

+3

-1 - 在我們這裏,我們渴望教人們良好的編碼習慣,而不是快速編寫代碼。 (除了你的回答是關於「拋出」異常,然後提供了一個無關緊要的例子......這只是重複了問題中的例子。) – 2012-07-19 00:34:34

相關問題