JAVA深化篇_01——自定義異常
自定義異常
-
在程序中,可能會遇到JDK提供的任何標準異常類都無法充分描述清楚我們想要表達的問題,這種情況下可以創建自己的異常類,即自定義異常類。
-
自定義異常類只需從Exception類或者它的子類派生一個子類即可。
-
自定義異常類如果繼承Exception類,則為CheckedException異常,必須對其進行處理;如果不想處理,可以讓自定義異常類繼承運行時異常RuntimeException類。
-
習慣上,自定義異常類應該包含2個構造器:一個是默認的構造器,另一個是帶有詳細信息的構造器。
【示例】自定義異常類
/**IllegalAgeException:非法年齡異常,繼承Exception類*/
public class IllegalAgeException extends Exception {
//默認構造器
public IllegalAgeException() {
}
//帶有詳細信息的構造器,信息存儲在message中
public IllegalAgeException(String message) {
super(message);
}
}
【示例】自定義異常類的使用
class Person {
private String name;
private int age;
?
?
public void setName(String name) {
this.name = name;
}
?
?
public void setAge(int age) throws IllegalAgeException {
if (age < 0) {
throw new IllegalAgeException("人的年齡不應該為負數");
}
this.age = age;
}
?
?
public String toString() {
return "name is " + name + " and age is " + age;
}
}
?
?
public class TestMyException {
public static void main(String[ ] args) {
Person p = new Person();
try {
p.setName("Lincoln");
p.setAge(-1);
} catch (IllegalAgeException e) {
e.printStackTrace();
}
System.out.println(p);
}
}
?
執行結果如圖所示:

使用異常機制的建議
要避免使用異常處理代替錯誤處理,這樣會降低程序的清晰性,并且效率低下。
處理異常不可以代替簡單測試---只在異常情況下使用異常機制。
不要進行小粒度的異常處理---應該將整個任務包裝在一個try語句塊中。
異常往往在高層處理
浙公網安備 33010602011771號