java中什么叫多重捕獲MultiCatch,它的用法是怎樣的
多重捕獲MultiCatch
馬克-
to-win:馬克 java社區(qū):防盜版實名手機尾號: 73203。
馬克-to-win:什么叫多重捕獲MultiCatch?一段代碼可能引起多個異常,這時可以定義兩個或更多的catch子句來處理這種情況,每個子句捕獲一種類型的異常。馬克-to-win:異常被引發(fā)時,每一個catch塊兒被依次檢查,第一個匹配異常類型的catch塊兒被執(zhí)行。馬克-to-win:當一個catch塊兒執(zhí)行以后,其他的catch塊兒被跳過,繼續(xù)try/catch塊以后的代碼。像switch一樣。
例:1.2.1-本章源碼
public class Test {
public static void main(String[] args) {
int arg1;
int result;
String s="abc";
// String s="12";
try {
arg1 = Integer.parseInt(s); //馬克-to-win:這里會發(fā)生異常,所以try塊中后面語句執(zhí)行不了, 進入catch 塊兒
result = arg1 /0;
System.out.println("try部分沒有完成,所以打印不出這里");
}
catch (NumberFormatException e) {
System.out.println("輸入?yún)?shù)必須為整數(shù)!");
}
System.out.println("馬克-to-win:優(yōu)雅結(jié)束");
}
}
輸出結(jié)果:
輸入?yún)?shù)必須為整數(shù)!
馬克-to-win:優(yōu)雅結(jié)束
觀察上一個例子可知:用戶根據(jù)提示,輸入會變成整數(shù),見下一個例子。
例:1.2.2-本章源碼
public class Test {
public static void main(String[] args) {
int arg1;
int result;
// String s="abc";
String s="12";
try {
arg1 = Integer.parseInt(s);
result = arg1 /0;//馬克-to-win:這里會再次拋出異常,使程序崩潰
System.out.println("try中完成finish");
}
catch (NumberFormatException e) {
System.out.println("輸入?yún)?shù)必須為整數(shù)!");
}
System.out.println("馬克-to-win:優(yōu)雅結(jié)束");
}
}
輸出結(jié)果:
Exception in thread "main" java.lang.ArithmeticException: / by zero
at Test.main(Test.java:9)
觀察例1.2.2可知:馬克-to-win:由于我們少捕獲一個除0異常,程序崩潰, 很可怕。程序進一步修改如下:
例:1.2.3-本章源碼
public class Test {
public static void main(String[] args) {
int arg1;
int result;
// String s="abc";
String s="12";
try {
arg1 = Integer.parseInt(s);
result = arg1 /0;
System.out.println("try中完成finish");
}
catch (NumberFormatException e) {
System.out.println("輸入?yún)?shù)必須為整數(shù)!");
} catch (ArithmeticException e) {
System.out.println("除數(shù)不能為0");
}
System.out.println("馬克-to-win:優(yōu)雅結(jié)束");
}
}
結(jié)果如下:
除數(shù)不能為0
馬克-to-win:優(yōu)雅結(jié)束