Java入門——異常的捕獲與處理
在沒有異常處理的語言中,通常需要大量的判斷語句,配合所想到的錯誤來捕獲程序中所有可能發生的錯誤。充分利用Java的異常處理機制,以增進程序的穩定性和效率。
Java的異常處理機制
- 一旦產生異常,則首先會產生一個異常類的實例化對象。
- 在try語句中對此異常對象進行捕獲。
- 產生的異常對象與catch語句中的各個異常類型進行匹配,如果匹配成功,則執行catch語句中的代碼。
- finaly是異常的統一出口,一定會執行。
所有的子類實例全部可由父類接收,利用向上轉型的概念,所有的異常對象都可以使用Exception類接收
throws關鍵字
throws:使用throws聲明的方法表示此方法不處理異常,而交給方法的調用處進行處理。
在主方法中不要使用throws關鍵字。
throw關鍵字
可以直接使用throw關鍵字人為的拋出一個異常,拋出時,直接拋出異常類的實例化對象即可。
范例:throw與throws的應用
設計一個相除的方法,要求必須打印“計算開始”信息,“計算結束”信息,如果有異常,則肯定調用被調用處處理。
1 package Sep18; 2 /*設計一個相除的方法,要求必須打印“計算開始”信息,“計算結束”信息,如果有異常,則肯定調用被調用處處理。 3 */ 4 public class TrowDemo02 { 5 public static void main(String args[]){ 6 Math m=new Math(); 7 try{ 8 System.out.println("除法操作:"+m.div(10, 0)); 9 }catch(Exception e){ 10 System.out.println("異常產生:"+e);//產生異常時執行。 11 } 12 } 13 } 14 class Math{ 15 public int div(int i,int j) throws Exception{//方法可以不處理異常,直接拋出 16 System.out.println("****計算開始****"); 17 int temp=0; 18 try{ 19 temp=i/j; 20 }catch(Exception e){//捕獲異常 21 throw e;//把異常結構交給被調用處 22 }finally{ 23 System.out.println("****計算結束****"); 24 } 25 return temp; 26 } 27 }
****計算開始****
****計算結束****
異常產生:java.lang.ArithmeticException: / by zero
Exception類與RuntimeException類
RuntimeException類是Exception類的一個子類,但是可以直接throws,而不用try---catch---拋出,但是最好還是正常捕獲。