为什么它是有意义的有运行时例外的未选中(而不是如果他们的检查)?

有帮助吗?

解决方案

如果你没有,你会在每次访问数组元素时有try / catch块,做了除法运算和许多其他常见的情况。

要换句话说,设想这样的代码:

Map map = ...
int i = ...
(int[])map.get("foo")[3] = 2334 / i;

必须检查ClassCastExceptionArrayIndexOutofBoundsExceptionArithmeticExceptionUnsupportedOperationExceptionNullPointerException就在我的头顶。

使用Java的问题不是unchecked异常。 checked异常是一个极具争议的话题。有人说,这主要是与Java实验,并在实践中他们没有工作,但你会发现很多的谁认为他们是很好的人。

没有一个是争论检查异常是坏但是。

其他提示

二种Java异常的想法(选中和未选中)是经过检查的异常应该用于可合理预期会发生的错误情况,并检查异常应该用于意外的错误条件。

例如,如果一个文件没有找到,你会得到一个FileNotFoundException,这是合理的预期你的程序能够处理这种情况。 unchecked异常应该只用于不应该发生的问题,并就真的证明存在在程序中的错误,如果这样的问题发生。例如,NullPointerException意味着你的程序试图取消引用变量,null,这就是最有可能的错误。

Java编译器迫使程序员来处理检查的异常。这使得编程语言更安全 - 这意味着程序员被迫考虑错误条件,这应该使程序更健壮

在编译器不检查未检查异常,因为unchecked异常不应该反正发生,如果他们这样做,没有什么,该方案可以合理地做到在运行时;程序员必须解决错误。

已经有一些批评在Java这个功能,有些人甚至称checked异常的一个失败的实验和一些人建议以去除检查的异常从Java 的。

这只是意味着,编译器不会强迫你去找一个例外,但你仍然可以把它在运行时。作为一个好处,这可以让你扔从类新的异常,而不需要你改变你的界面,使主叫方改变他们的代码。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top