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