一般來說,在Java的異常處理方法有兩種。爲什麼RuntimeException不需要顯式異常處理?
- 添加拋出聲明在方法簽名
- 環繞與try/catch塊。
但是,我注意到一些例外,特別是從RuntimeException
繼承的例外,不需要這樣的顯式異常處理。
例如,我創建了一個示例方法如下,並標明「不需要」對於不要求明確的異常處理的人。
public void textException(){
int i = (new Random()).nextInt(100);
switch (i){
case 1:
throw new NullPointerException(); //Not required
case 2:
throw new NumberFormatException(); //Not required
case 3:
throw new RuntimeException(); //Not required
case 4:
throw new ClassNotFoundException(); //Required
case 5:
throw new IOException(); //Required
case 6:
throw new Exception(); //Required
default:
return;
}
}
我注意到,從Exception
RuntimeException
繼承。
那爲什麼RuntimeException
並不需要明確陷入被編譯,而其他Exceptions
呢?
那些被稱爲經過和Java中未檢查異常。這些已在討論中多次討論http://stackoverflow.com/questions/6115896/java-checked-vs-unchecked-exception-explanation – 2013-02-21 05:24:35
一個方法不需要在throws子句中聲明RuntimeException的任何子類可能在執行該方法期間拋出,但未捕獲。 – sudmong 2013-02-21 05:25:22