看到最後一直很迷茫 “被檢查的異常”爲什麼意思;
public class ExceptionTypeTest {
public void doSomething()throws ArithmeticException{
System.out.println();
}
public static void main(){
ExceptionTypeTest ett = new ExceptionTypeTest();
ett.doSomething();
}
}
問題1:上面的程序能否編譯通過?並說明理由。
解答:能編譯通過。
分析:按照一般常理,定義doSomething方法是定義了ArithmeticException異常,在main方法裏 裏面調用了該方法。那麼應當繼續拋出或者捕獲一下。但是ArithmeticException異常是繼承RuntimeException運行時異常。 java裏面異常分爲兩大類:checked exception(檢查異常)和unchecked exception(未檢查異常),對於未檢查異常也叫RuntimeException(運行時異常),對於運行時異常,java編譯器不要求你一定要把它捕獲或者一定要繼續拋出,但是對checked
exception(檢查異常)要求你必須要在方法裏面或者捕獲或者繼續拋出.
問題2:上面的程序將ArithmeticException改爲IOException能否編譯通過?並說明理由。
解答:不能編譯通過。
分析:IOException extends Exception 是屬於checked exception ,必須進行處理,或者必須捕獲或者必須拋出
總結:java中異常分爲兩類:checked exception(檢查異常)和unchecked exception(未檢查異常)
對於未檢查異常也叫RuntimeException(運行時異常).
對未檢查的異常(unchecked exception )的幾種處理方式:
1、捕獲
2、繼續拋出
3、不處理
對檢查的異常(checked exception,除了RuntimeException,其他的異常都是checked exception )的幾種處理方式:
1、繼續拋出,消極的方法,一直可以拋到java虛擬機來處理
2、用try...catch捕獲
注意,對於檢查的異常必須處理,或者必須捕獲或者必須拋出
Think Java:
開發“被檢查的異常” 對開發健壯的程序是非常必要的前提:
1.不在於編譯器是否會強制程序員去處理錯誤,而是要有一致的、使用異常來報告錯誤的模型;