Think in JAVA中“被檢查的異常”的理解

看到最後一直很迷茫 “被檢查的異常”爲什麼意思;

Java代碼 
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.不在於編譯器是否會強制程序員去處理錯誤,而是要有一致的、使用異常來報告錯誤的模型;


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章