RuntimeException仅当客户端无法从问题中恢复时,才应使用A。偶尔做您正在谈论的事情是适当的,但更多时候是不合适的。
如果您使用的JDK> = 1.4,则可以执行以下操作:
尝试{ //可能引发异常的代码} catch(IOException e){ 抛出新的RuntimeException(e);} catch(ClassNotFoundException e){ 抛出新的RuntimeException(e);}并且重新投递
RuntimeException的原因将包含在其中。这样,线程顶部的某个人抓住了
RuntimeException-您的线程确实被抓住了,
RuntimeException所以他们不会只是默默地死掉,对吗?-至少可以打印出原因的完整堆栈跟踪。
但是正如其他人已经说过并会说的那样,检查异常是有原因的。仅当确定您的客户端无法从作为非检查异常重新抛出的问题中恢复时,才执行此操作。
注意:
RuntimeException如果有可用的话,使用一个更具体的未检查的异常要好得多。例如,如果您的方法可能引发a的唯一原因
ClassNotFoundException是由于缺少配置文件,则可以重新引发a
MissingResourceException,这是未经检查的异常,但会提供有关为何引发它的更多信息。其他好的
RuntimeExceptions到使用,如果他们描述你重新抛出的问题
IllegalStateException,
TypeNotPresentException和
UnsupportedOperationException。
还要注意,对于您的线程来说,捕获RuntimeException并至少对其进行记录总是一个好主意。至少通过这种方式,您了解线程为何消失。



