Java異常--其他概念—throw、throws、Exception、RuntimeException、斷言
1、throws關鍵字

假設定義一個除法的方法div(),對於除法來說:有可能出現異常,有可能不出現異常。所以對於這樣的方法來說,最好使用throws關鍵字進行聲明。一旦出現了異常,則交給調用處處理。
因為div()方法使用了throws關鍵字聲明。所以調用此方法的時候,必須進行異常處理。
class Math{ public int div(int i,int j) throws Exception{ // 定義除法操作,如果有異常,則交給被調用處處理 int temp = i / j ; // 計算,但是此處有可能出現異常 return temp ; } }; public class ThrowsDemo01{ public static void main(String args[]){ Math m = new Math() ; // 實例化Math類對象 try{ System.out.println("除法操作:" + m.div(10,2)) ; }catch(Exception e){ e.printStackTrace() ; // 打印異常 } } };如果在主方法的聲明中使用了throws關鍵字,則主方法也可以不處理異常了。則將一切異常交給JVM進行處理。
class Math{ public int div(int i,int j) throws Exception{ // 定義除法操作,如果有異常,則交給被調用處處理 int temp = i / j ; // 計算,但是此處有可能出現異常 return temp ; } }; public class ThrowsDemo02{ // 在主方法中的所有異常都可以不使用try...catch進行處理 public static void main(String args[]) throws Exception{ Math m = new Math() ; // 實例化Math類對象 System.out.println("除法操作:" + m.div(10,0)) ; } };
2、throw關鍵字

在異常處理中,try語句中藥捕獲的是一個異常的對象,那麼此異常對象也可以自己拋出。
public class ThrowDemo01{ public static void main(String args[]){ try{ throw new Exception("自己拋著玩的。") ; // 拋出異常的實例化對象 }catch(Exception e){ System.out.println(e) ; } } };
3、throw與throws應用範例
例如:要設計一個相除的方法,但是在進行操作之前必須打印“計算開始”的信息、結束之後打印“計算結束”的信息。如果有異常的話,則應該吧異常交給被調用處處理。
class Math{ public int div(int i,int j) throws Exception{ // 定義除法操作,如果有異常,則交給被調用處處理 System.out.println("***** 計算開始 *****") ; int temp = 0 ; // 定義局部變量 try{ temp = i / j ; // 計算,但是此處有可能出現異常 }catch(Exception e){ throw e ; }finally{ // 不管是否有異常,都要執行統一出口 System.out.println("***** 計算結束 *****") ; } return temp ; } }; public class ThrowDemo02{ public static void main(String args[]){ Math m = new Math() ; try{ System.out.println("除法操作:" + m.div(10,0)) ; }catch(Exception e){ System.out.println("異常產生:" + e) ; } } };

4、Exception與RuntimeException的區別
public class RuntimeExceptionDemo01{ public static void main(String args[]){ String str = "123" ; // 定義字符串,全部由數字組成 int temp = Integer.parseInt(str) ; // 將字符串變為int類型 System.out.println(temp * temp) ; // 計算乘方 } };parseInt()方法的定義格式為:
public static int parseInt(String s) throws NumberFormatException
在此方法中明明已經使用了throws關鍵字拋出異常,為什麼不用處理,編譯也能通過呢??


5、自定義異常類
隻需要繼承Exception就可以完成自定義異常類。
class MyException extends Exception{ // 自定義異常類,繼承Exception類 public MyException(String msg){ super(msg) ; // 調用Exception類中有一個參數的構造方法,傳遞錯誤信息 } }; public class DefaultException{ public static void main(String args[]){ try{ throw new MyException("自定義異常。") ; // 拋出異常 }catch(Exception e){ System.out.println(e) ; } } }
6、斷言(assert)



7、總結

最後更新:2017-04-03 14:53:37