有人可以解释为什么算术异常属于未检查的异常类别吗?我已经搜索了它,但没有正确的答案。如果有人回答,将不胜感激。
答案 0 :(得分:5)
runtime: nodejs
env: flex
manual_scaling:
instances: 1
resources:
cpu: 1
memory_gb: 0.5
disk_size_gb: 10
扩展了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
}
至少对我来说,这很烦人。
答案 1 :(得分:4)
为了使开发人员免于处理由于编程错误而导致的各种异常,例如从数组末尾掉落,除以零等等,因此将某些异常提名为未经检查的异常(这些异常源自RuntimeException
),无需声明。
答案 2 :(得分:1)
因为它类似于非法的参数异常。
所有IllegalArgumentException
,IllegalStateException
和NullPointerException
均被视为编程错误,未经检查,可以避免throws
子句在整个代码中过度扩散,原则上可能会抛出任何和所有这些异常都未经检查。
之间只有一个语法上的差异:
y=a/b;
和
y=div(a,b);
答案 3 :(得分:0)
听起来像一个旧线程,但是如果有帮助,这里有一些关于该主题的详细想法,其中包含更多的见解,推理和API参考。 FAQ about checked exception and unchecked exception?
希望这会更深入地回答。