如何判断异常是检查还是不检查?

问题描述

我正在阅读 Java 中已检查与未检查异常以及何时使用它们:

这是底线:如果可以合理地期望客户端从异常中恢复,请将其设为已检查异常。如果客户端无法从异常中恢复,请将其设为未经检查的异常。

客户端不能恢复的一个例子是除以零,他们可以恢复的东西是 FileNotFound 异常。不过我还没有看到区别。为什么您可以捕获一个并记录错误,但不能捕获另一个并记录错误?什么使某些东西可以合理恢复?您不能在所有情况下捕获错误(从而恢复)吗?

解决方法

引用的意思是:如果客户端代码无法从问题中恢复,则需要让异常传播到更高层。如果为此使用受检异常,则需要通过所有调用层声明受检异常,而没有任何好处。

重新表述这句话:如果异常预计会通过层传播,请取消检查。只检查调用者是否真的可以做些什么。

,

当检查异常并发生异常时,很容易排查异常原因。如果我们不使用受检异常,就很难找出异常的原因。 Checked 异常给出了预期异常的概念。