try-catch-finally異常處理(一)
來源:程序員人生 發布時間:2015-01-13 09:05:48 閱讀次數:7046次
java異常處理的方式有兩種
1.捕捉異常
2.轉移異常
這里先說捕捉異常(對1個系統而言,異常處理是非常關鍵的,處理得好能夠避免和減少系統bug,同時也能夠非常好的定位問題來源)
捕捉異常都是通過try-catch-finally結構處理,1般有兩種格式
以下所示:
//結構2
try {
//可能會產生異常的語句
} catch (Exception e) {
//捕捉到異常后的處理語句
}
//結構2
try {
//可能會產生異常的語句
} catch (Exception e) {
//捕捉到異常后的處理語句
}
finally {
}
注意:catch和finally不1定同時存在。但是try必須與二者之1共同存在,也就是說結構可以是try-catch和try-finally
寫1個簡單的異常捕捉例子
public class ExceptionTest {
public static void main(String[] args) {
try {
//被除數不能為0,程序拋出異常
int i = 0, j = 1;
int k = j / i;
} catch (Exception e) {
System.out.println("已捕捉到異常");
e.printStackTrace();
}
}
}
如上i分母不能為0,所以try程序中的語句就會拋出異常,然后catch捕捉到異常并履行catch中的語句
運行結果以下:
已捕捉到異常
java.lang.ArithmeticException: / by zero
at ExceptionTest.main(ExceptionTest.java:7)
那到底甚么時候catch會履行甚么時候不會履行呢?和finally甚么時候會履行?
其實catch中的語句如果在捕捉到異常的情況下都會履行,當try語句塊中拋出異常,該異常實力對象就會順次匹配在各個catch語句塊中的類型Exception1、Exception2、Exception3.....。1旦匹配上就會進入相應的catch語句塊并履行。此時則為異常被catch語句塊捕捉到
而finally語句塊1般總是會被履行,不管是不是產生了異常程序都會履行。如果履行到try或是catch語句塊中的return語句,則先運行finally語句塊
以下:
public class ExceptionTest {
public static void main(String[] args) {
try {
// 拋出(throw)異常
System.out.println("履行try語句塊,拋出異常");
throw new Error();
} catch (Exception e) {
System.out.println("履行catch語句塊,已捕捉到Exception異常");
e.printStackTrace();
} catch (Error e) {
System.out.println("履行catch語句塊,已捕捉到Error毛病");
e.printStackTrace();
} finally {
System.out.println("履行finally語句塊");
}
}
}
運行結果:
履行try語句塊,拋出異常
java.lang.Error
at ExceptionTest.main(ExceptionTest.java:8)
履行catch語句塊,已捕捉到Error毛病
履行finally語句塊
固然當try中不做任何操作,finally也會履行。
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈