我经常遇到同样的问题。在我的Java应用程序的核心,我有方法抛出一个无法由任何方法调用者处理的异常。我必须将这些例外发挥到主要方法。所有这些异常总结,所以我有很多关于我的应用程序更高级别的抛出声明。Java无法处理的例外
E.g.我有一个NodeJsManager.java类在我的应用程序的核心:
public class NodeJsManager {
public static void startNodeJs() throws ExecuteException {
// Code to start NodeJs Server goes here
}
}
要启动服务器的NodeJS,我不得不执行命令行的东西。我可以使用apache类org.apache.commons.exec.CommandLine。但是,如果执行退出并显示错误代码,则会引发ExecuteException。如果没有启动NodeJ,我的应用程序就没用了。没有方法可以捕捉到这个异常,这只是要求为我的应用程序工作。所以这个例外几乎会在整个应用程序生命周期中产生泡沫。我有其他的管理者也是这样做的(一个ConfigurationManager会抛出一个异常,如果配置路径错误的话)。总而言之,它总结了许多投掷语句中的每一种方法的更高层次,我甚至不记得那种例外的原因。
你会如何处理这个问题?我必须做一些完全错误的事情,因为我找不到描述我的问题的类似帖子!
问候 迈克
更新
我刚出土我好老有效的Java书。作者(在谷歌一个Java架构师)写了下面的有关例外:
...使用检查可恢复条件和运行 例外编程错误例外。
...
如果没有明显的复苏是否是可能的,你可能会更好过使用未经检查的异常...
在我的情况下,它显然是不可恢复的,所以抛出一个运行时异常是最好的选择。我一直认为应该阻止运行时异常,这改变了我对Java中异常的看法。