一、掌握使用throw拋出異常javascript
二、總結Java中對異常處理的二種方式php
當程序發生錯誤時,系統會自動拋出異常,這是咱們上節使用的throws聲明拋出異常,除此之外,Java也容許程序員自行拋出異常。自行拋出異常,使用throw語句完成。css
那麼何時程序員自行拋出異常呢?通常狀況下,程序員自行拋出的異常,是由業務產生的,好比性別輸和不是「男「或」女「,系統是沒法自行判斷這種異常的,只能由程序員來決定是否拋出。html
1
|
throw
ExceptionInstance
|
1
2
3
4
5
6
7
8
9
10
11
12
|
public
class
Person {
private
String name;
private
int
age;
private
String sex;
public
void
setSex(String sex)
throws
Exception {
if
(
"男"
.equals(sex)||
"女"
.equals(sex)){
this
.sex = sex;
}
else
{
throw
new
Exception(
"性別必須是:男或女"
);
}
}
}
|
1
2
3
4
5
6
7
8
9
10
|
public
class
Test {
public
static
void
main(String[] args) {
Person person =
new
Person();
try
{
person.setSex(
"male"
);
}
catch
(Exception e) {
e.printStackTrace();
}
}
}
|
使用不一樣:throw用於程序中拋出異常;throws用於聲明在該方法內拋出了異常前端
使用位置不一樣:throw位於方法體內部,能夠做爲單獨語句使用;throws必須跟方法參數列表後面,不能單獨使用java
內容不一樣:throw拋出一個異常對象,並且只能是一個;throws後面跟異常類,並且能夠跟多個異常類。node
綜合前幾節所講的內容,咱們對異常的處理有二種方法
python
在出現異常的方法內捕獲並處理異常,使用try-catch-finallly,該方法的調用者不用再次捕獲該異常。mysql
該方法簽名中聲明拋出該異常,將該異常交給方法調用都處理.jquery
實際應用中每每須要更復雜的處理方式:當一個異常出現的時候,單靠某個方法沒法徹底處理該異常,必須由幾個方法才能夠徹底處理該異常。也就是說,異常出現的當前方法中,程序只對異常進行部分處理,還有些處理須要該方法的調用者中才能完成,因此應該再次拋出異常。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
public
class
Cal {
public
String division(String stra, String strb)
throws
Exception{
try
{
int
a = Integer.parseInt(stra);
int
b = Integer.parseInt(strb);
int
c = a / b;
return
String.valueOf(c);
}
catch
(NumberFormatException e) {
System.err.println(
"數字格式異常:程序只能接受整數參數"
);
return
"數字格式異常"
;
}
catch
(Exception e) {
throw
new
Exception(
"未知異常"
);
}
finally
{
System.out.println(
"感謝您使用本程序!"
);
}
}
}
|