[英]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
),並且不需要聲明。
因為它類似於非法的參數異常。
所有IllegalArgumentException
, IllegalStateException
和NullPointerException
都被視為編程錯誤,並且未經檢查,以防止throws
子句在整個代碼中過度擴散,因此原則上可能拋出未經檢查的所有異常。
之間只有一個語法上的差異:
y=a/b;
和
y=div(a,b);
聽起來像一個舊線程,但如果有幫助,這里有一些關於此主題的詳細想法,其中包含更多的見解,推理和API參考。 關於檢查異常和非檢查異常的常見問題?
希望這會更深入地回答。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.