处理以静默方式杀死线程的意外异常

时间:2015-06-04 15:51:44

标签: java exception exception-handling

我有一个线程,有时只是静静地死,我想用try / catch块来围绕操作,以找出正在发生的事情而不会杀死线程。

我最初使用try / catch(Exception e)块包围运行中的操作,但关注的是这可能会忽略由run()的依赖项抛出的已检查异常,并且无法正确处理。另一方面,我担心(未经检查)错误也会被吞噬。

有人建议,作为一个短期防御,我应该将当前的run()方法重命名为runInternal(),没有声明检查异常,并将catch / log Throwable放在run()中调用runInternal()。

我不明白这会有什么帮助。

1 个答案:

答案 0 :(得分:1)

  

我想用try / catch块来包围操作以找出答案   什么事情没有杀死线程。

快速回答:你无法保存线程。一旦抛出异常,你作为局外人获得的最多就是堆栈跟踪。

使用runInternal技术进行包装将帮助您记录错误的堆栈跟踪,而不是让线程无声地死掉。

然而,你真正想要做的是附加一个调试器,比如eclipse,并将其设置为暂停捕获和未捕获的异常,直到找到你正在寻找的那个。这将在故障点暂停线程,而不会杀死它。

Break when exception is thrown