2009-07-16 65 views
1

我正在學習Java程序員認證(SCJP)考試。關於例外情況的問題,在處理例外情況時最好處理特定的例外情況,如NumberFormatException或使用父母Exceptionclass捕獲所有例外情況?SCJP考試:處理異常

基於我的課程,未經檢查的例外基本上是RunTimeException,這主要是程序錯誤的結果。這是否意味着,當我手動拋出一個異常,我寧願用:

new Exception("... my message...") 

而且,我不應該處理RunTimeException? 只處理檢查的異常?

回答

2

您應該儘可能處理特定的Exception s。如果你知道什麼時候可能拋出RuntimeException,你通常應該修復你的程序,以免拋出Exception

由於作爲俘獲檢查遠Exceptions去,你要處理具體的Exception,你可以這樣:

try { 
} catch (FileNotFoundException fnfe){ 
} catch (IOException ioe){ 
} catch (Exception e){ 
} 

當你扔Exceptions,你應該幾乎從來不使用throw new Exception()。 拋出一個異常,可以讓看到它的人得到關於拋出時發生的事情的更多信息。 (即IndexOutOfBoundsNullPointerExceptions。他們給特定的信息瓦特/出連看消息或堆棧跟蹤。)

如果你想拋出一個Exception,你不覺得Java API中有一個適合你的情況,最好將子類或子類擴展爲給它一個非常豐富的名稱。

0

在這些情況下,您可以繼承Exception(而不是RuntimeException)。