【发布时间】:2016-06-30 16:58:59
【问题描述】:
在 oracle 文档中它说
如果可以合理地期望客户端从异常中恢复,则将其设为已检查异常。如果客户端无法从异常中恢复,请将其设为未经检查的异常。
例如,ClassNotFoundException 和 CloneNotSupportedException 是已检查异常的两个示例,但是如果我们在运行时捕获这些类型的异常,客户端将无法解决它们。 但是如果他们用客户端这个词来表示开发人员,那也没有任何意义,因为程序员在运行时无法做任何事情来从这些类型的异常中恢复。
【问题讨论】:
-
是的,他可以。在 CloneNotSupportedException 上,他可以求助于另一种复制算法。在 ClassNotFoundException 上,他可以尝试找到另一个类来实例化(考虑反射)。
-
根据您的类比,您可以对取消检查的异常说同样的话,例如在 ArithmeticException 或 IllegalArgumentException 的情况下,您可以向用户询问新的(正确的)值。
-
没错。但是可以在没有用户交互的情况下更改克隆算法。当您遇到非法争论时,没有更多信息就无法恢复。
-
因此您在 oracle doc 中推断出
reasonably一词,表示静默且无需用户交互。因为我认为要求用户提供正确的输入是很合理的。 -
是的,因为“客户端”的意思是“调用引发异常的方法的代码”。
标签: java exception runtimeexception