我在Java应用程序中使用第三方库。此第三方库在每次应用程序启动时都会引发自定义未捕获的异常。该例外是无害的,仅用于内部第三方库的日志记录。由于未捕获此异常,因此每次启动应用程序时都会导致Eclipse IDE切换到调试透视图并挂起线程执行,以通知我该问题。我必须手动告诉Eclipse忽略这一点,并且每次都要恢复调试。这非常烦人。我无法更改第三方库以解决此问题。
有没有办法告诉Eclipse IDE忽略特定类型的未捕获异常?
我尝试了“Step Filtering”但是(我认为)因为自定义未捕获的异常不在堆栈跟踪中,所以它不会从调试器中过滤掉。这是我第一次涉足Step Filtering,所以我可能会错误地使用它。这是一个示例堆栈跟踪。
Daemon Thread [Thread-13] (Suspended (exception CustomThirdPartyException))
ThreadPoolExecutor$Worker.run() line: not available [local variables unavailable]
Thread.run() line: not available
编辑:
jluzwick在禁用Eclipse中所有未捕获的异常后,使用我们自己的记录器来监视未捕获的异常的工作在技术上可行,但它并不理想,如果我们的记录器坏了,我们可能会错过任何东西。
mazaneicha的解决方案似乎在正确的轨道上,但我无法让它按照我想要的方式工作。这可能是由于我的用户错误。jluzwick和mazaneicha都有可能解决这个问题,但Konstantin Komissarchik有“正确”的答案,因为这应该被推回到图书馆的创作者来修复。有时技术解决方案不是正确的解决方案。
答案 0 :(得分:12)
一个旧线程,但我想我会添加一点。
至少在Eclipse Indigo中:在Debug Perspective-> Breakpoints视图中:
我倾向于使用它,以便我可以将NullPointerExceptions指定为一般异常断点,但忽略来自第三方库的包。
答案 1 :(得分:2)
我建议尝试在代码中解决此问题。在代码中找到初始化此库的位置并捕获此异常,而不是让它在堆栈中向上传播,这不被视为“正常”行为。
答案 2 :(得分:1)
你试过这个吗?
转到Window-> Preferences-> Java-> Debug
在“暂停执行”下,取消选中“暂停执行未捕获的异常”
我不确定是否有办法禁用特定的异常,但我可能错了。可能有一个插件可以做到这一点。
答案 3 :(得分:1)
在Debug透视图,Breakpoints视图中,单击Java Exception Breakpoints(带有小写字母J和感叹号的图标,J!)。在出现的Add Java Exception Breakpoint窗口中,您可以找到恼人的异常并取消选中“Suspend on Uncaught Exception”框。
答案 4 :(得分:0)
听起来你需要一个简单的尝试,赶上。
MyException e = new MyException;
try {
throw new e;
} catch (MyException e) {
e.printStackTrace();
}
这将允许抛出异常,但会忽略并让程序继续。如果您希望将其记录到文件中,请使用'PrintWriter.println(e.printStackTrace());'
我希望你得到你需要的东西,并且编码愉快!
答案 5 :(得分:0)
有助于Jeff的回答:
在“调试”透视图中,右键单击挂起的线程,然后选择“排除异常位置”。这样,Eclipse将线程挂起的类添加到未捕获的异常的过滤列表中。