如何在catch塊中區(qū)分不同類型的異常

小樊
84
2024-08-30 20:07:06
欄目: 編程語言

在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塊。我們分別為ArithmeticExceptionNullPointerException提供了catch塊。如果拋出的異常與這兩種類型不匹配,它將被第三個(gè)catch塊捕獲,該塊捕獲所有其他Exception類型。

注意:在實(shí)踐中,您應(yīng)該盡量捕獲更具體的異常類型,而不是捕獲通用的Exception類型,因?yàn)檫@樣可以讓您更準(zhǔn)確地處理不同類型的異常。

0