java基礎學習-異常

異常

 Java把異常當作對象來處理

異常結構


Throwable是所有異常的根,java.lang.Throwable
Error是錯誤,java.lang.Error
Exception是異常,java.lang.Exception

異常分類

Exception異常分爲兩大類

a) Checked exception(非運行時異常)  (非  RuntimeException,Error) 
如IO異常
b) Unchecked exception(運行時異常)(RuntimeException,Error) 
如數組越界、空指針等

Java中所有的異常類都會直接或間接地繼承自Exception。 
 RuntimeException類也是直接繼承自Exception類,它叫做運行時異常,Java中所有
的運行時異常都會直接或間接地繼承自RuntimeException。 
Java 中凡是繼承自Exception而不是繼承自RuntimeException的類都是非運行時異
常。

異常處理

a)對於非運行時異常(checked  exception),必須要對其進行處理,處理方式有兩種:
第一種是使用try.. catch…finally 進行捕獲;
第二種是在調用該會產生異常的方法所在的方法聲明throws Exception 

b)對於運行時異常(runtime  exception),我們可以不對其進行處理,也可以對其進行
處理。推薦不對其進行處理。 
try{
 } catch(Exception e) { 
} finally { 

無論程序是否出現異常,finally 塊中的代碼都是會被執行的。 
如果try 塊中存在return 語句,那麼首先也需要將finally 塊中的代碼執行完畢,然
後方法再返回。
如果try 塊中存在System.exit(0)語句,那麼就不會執行finally 塊中的代碼,因爲
System.exit(0)會終止當前運行的Java虛擬機,程序會在虛擬機終止前結束執行。

我們可以使用多個catch塊來捕獲異常,這時需要將父類型的catch塊放到子類型的
catch塊之後,這樣才能保證後續的catch可能被執行
,否則子類型的catch將永遠
無法到達,Java 編譯器會報編譯錯誤;如果多個catch 塊的異常類型是獨立的
(MyException, MyException2),  那麼誰前誰後都是可以的。

自定義異常

所謂自定義異常,通常就是定義了一個繼承自Exception類的子類,那麼這個類就是
一個自定義異常類。通常情況下,我們都會直接繼承自Exception類,一般不會繼承
某個運行時的異常類。
class ChushulingException extends Exception{  
    public ChushulingException(String msg){  
        super(msg);  
    }  
}   
  
class ChushufuException extends Exception{  
    public ChushufuException(String msg){  
       super(msg);  
    }  
}  
  
/*自定義異常 End*/  
class Numbertest{  
   public int shang(int x,int y) throws ChushulingException,ChushufuException{  
        if(y<0){  
           throw new ChushufuException("您輸入的是"+y+",規定除數不能爲負數!");//拋出異常   
        }  
       if(y==0){  
            throw new ChushulingException("您輸入的是"+y+",除數不能爲0!");  
       }  
        int m=x/y;  
        return m;  
    }  
}


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