.在程序中,可能會遇到JDK提供的任何標准異常類都無法充分描述清楚我們想要表達的問題,這種情況下可以創建自己的異常類,即自定義異常類。
2.自定義異常類只需從Exception類或者它的子類派生一個子類即可。
3.自定義異常類如果繼承Exception類,則為受檢查異常,必須對其進行處理;如果不想處理,可以讓自定義異常類繼承運行時異常RuntimeException類。
4.習慣上,自定義異常類應該包含2個構造器:一個是默認的構造器,另一個是帶有詳細信息的構造器。
【示例】自定義異常類
1
2
3
4
5
6
7
8
9
10
11
|
/**IllegalAgeException:非法年齡異常,繼承Exception類*/
class
IllegalAgeException
extends
Exception {
//默認構造器
public
IllegalAgeException() {
}
//帶有詳細信息的構造器,信息存儲在message中
public
IllegalAgeException(String message) {
super
(message);
}
}
|
【示例】自定義異常類的使用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
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.exit(-
1
);
}
System.out.println(p);
}
}
|
使用異常機制的建議
1.要避免使用異常處理代替錯誤處理,這樣會降低程序的清晰性,並且效率低下。
2.處理異常不可以代替簡單測試---只在異常情況下使用異常機制。
3.不要進行小粒度的異常處理---應該將整個任務包裝在一個try語句塊中。
4.異常往往在高層處理(先了解!后面做項目會說!) 。