在第三方代码中捕获运行时异常

时间:2012-06-12 14:51:28

标签: java runtimeexception

我开发了一个框架,允许其他人插入不同的优化器实现。这些优化器是异步运行的,我在异步代码内部和之后连接了侦听器,以监视优化器的执行。例如:

public void async(Optimizer o){
   runListeners(o);
   o.run();
   runListeners(o);
}

我的问题是,一些懒惰的程序员在代码中抛出一些NullPointerExceptions并阻止该方法第二次执行监听器。我想抓住RuntimeException,但这对我来说是不对的。

2 个答案:

答案 0 :(得分:1)

每当你为插件创建一个框架来运行时,你必须考虑如何处理插件抛出的异常,因为你通常不希望一个行为不当的插件来破坏你的整个程序。在这里捕获Exception,RuntimeException或者甚至可能是Throwable没有任何问题(尽管错误可能仍然是导致中止的原因)。

答案 1 :(得分:0)

runListeners(o);
try {
  o.run();
} finally {
  runListeners(o);  // this will get run even if you get NPE
  // now your program crashes with the NPE :)
}