在Java中,要在一個(gè)catch
塊中區(qū)分不同類型的異常,你可以使用多個(gè)catch
塊來捕獲特定類型的異常
public class Main {
public static void main(String[] args) {
try {
// 這里寫可能會(huì)拋出異常的代碼
int result = riskyOperation();
} catch (ArithmeticException e) {
// 處理算術(shù)異常(例如除數(shù)為零)
System.out.println("發(fā)生了算術(shù)異常: " + e.getMessage());
} catch (NullPointerException e) {
// 處理空指針異常
System.out.println("發(fā)生了空指針異常: " + e.getMessage());
} catch (Exception e) {
// 處理其他未知異常
System.out.println("發(fā)生了未知異常: " + e.getMessage());
}
}
public static int riskyOperation() {
// 這里模擬一個(gè)可能會(huì)拋出異常的方法
int a = 10;
int b = 0;
return a / b; // 這將拋出一個(gè)ArithmeticException(算術(shù)異常)
}
}
在這個(gè)示例中,我們首先嘗試執(zhí)行riskyOperation()
方法。如果該方法拋出一個(gè)異常,程序?qū)⑦M(jìn)入相應(yīng)的catch
塊。我們分別為ArithmeticException
和NullPointerException
提供了catch
塊。如果拋出的異常與這兩種類型不匹配,它將被第三個(gè)catch
塊捕獲,該塊捕獲所有其他Exception
類型。
注意:在實(shí)踐中,您應(yīng)該盡量捕獲更具體的異常類型,而不是捕獲通用的Exception
類型,因?yàn)檫@樣可以讓您更準(zhǔn)確地處理不同類型的異常。