Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么算术异常是未检查的异常?_Java - Fatal编程技术网

Java 为什么算术异常是未检查的异常?

Java 为什么算术异常是未检查的异常?,java,Java,有人能解释一下为什么算术异常属于未检查的异常类别吗?我已经搜索过了,但没有正确的答案。如果有人能回答,我将不胜感激。为了让开发人员能够处理由于编程错误(如数组末端脱落)而出现的各种异常,除以零,依此类推,一些异常被指定为未检查的异常(那些从RuntimeException派生的异常),并且不需要声明。算术异常扩展了RunttimeeException,因此它是未检查的 为什么要做出这样的设计决定?如果选中了arithmetricexception,则必须将每个(!)整数除法封装在try catc

有人能解释一下为什么算术异常属于未检查的异常类别吗?我已经搜索过了,但没有正确的答案。如果有人能回答,我将不胜感激。

为了让开发人员能够处理由于编程错误(如数组末端脱落)而出现的各种异常,除以零,依此类推,一些异常被指定为未检查的异常(那些从
RuntimeException
派生的异常),并且不需要声明。

算术异常
扩展了
RunttimeeException
,因此它是未检查的

为什么要做出这样的设计决定?如果选中了
arithmetricexception
,则必须将每个(!)整数除法封装在
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
}


至少对我来说,这会很烦人。

因为这类似于非法参数例外

所有的
IllegalArgumentException
IllegalStateException
NullPointerException
都被视为编程错误并被取消选中,以避免
throws
子句在整个代码中过度增殖,原则上可能抛出任何和所有这些未被取消选中的异常

以下两者之间只有一个同步的区别:

y=a/b;


听起来像是一个老话题,但如果有帮助的话,这里有一些关于这个主题的详细想法,以及更多的见解、推理和API参考


希望这能更深入地回答问题。

我猜编译器如何知道您将尝试除以0,例如。javadoc:“…在Java虚拟机正常运行期间可能引发的异常”-例如整数除法,可能被认为是JVM的正常操作,因为它不是在经典方法中完成的
y=a/b;
y=div(a,b);