簡體   English   中英

為什么算術異常是未經檢查的異常?

[英]Why Arithmetic Exception is an unchecked exception?

有人可以解釋為什么算術異常屬於未檢查的異常類別嗎?我已經搜索了它,但沒有正確的答案。如果有人回答,將不勝感激。

ArithmeticException擴展了RunttimeException ,因此未經檢查。

為什么要設計決定? 如果選中了ArithmeticException ,則必須在try catch封裝每個(!)整數除法,或者向周圍的方法中添加throws

以下程序無法編譯:

class MyClass {
    int i = 10;
    void myMethod() {
        int j = 1 / i;
        // do something with j
    }
}

您將不得不寫

void myMethod() throws ArithmeticException {
    int j = 1 / i;
    // do something with j
}

要么

void myMethod() {
    int j;
    try {
        j = 1 / i;
    } catch (ArithmeticException e) {
        j = ...; // what value should be used?
    }
    // do something with j
}

至少對我來說,這很煩人。

為了使開發人員免於處理由於編程錯誤而導致的各種異常,例如從數組末尾掉落,除以零等等,因此將某些異常指定為未經檢查的異常(這些異常源自RuntimeException ),並且不需要聲明。

因為它類似於非法的參數異常。

所有IllegalArgumentExceptionIllegalStateExceptionNullPointerException都被視為編程錯誤,並且未經檢查,以防止throws子句在整個代碼中過度擴散,因此原則上可能拋出未經檢查的所有異常。

之間只有一個語法上的差異:

y=a/b;

y=div(a,b);

聽起來像一個舊線程,但如果有幫助,這里有一些關於此主題的詳細想法,其中包含更多的見解,推理和API參考。 關於檢查異常和非檢查異常的常見問題?

希望這會更深入地回答。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM