繁体   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