作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个线程,有时会默默地终止,我想用 try/catch block 包围该操作,以找出正在发生的情况而不杀死该线程。
我最初使用 try/catch (Exception e) block 包围 run 中的操作,但担心这可能会忽略 run() 依赖项引发的已检查异常,并且无法正确处理。另一方面,我担心(未经检查的)错误也会被吞噬。
有人建议,作为短期防御,我应该将当前的 run() 方法重命名为 runInternal() 之类的名称,不声明任何已检查的异常,并将 catch/log Throwable 放在 run() 的调用周围runInternal()。
我不明白这有什么帮助。
最佳答案
I want to surround the operation with a try/catch block to find out what is going on without killing the thread.
快速回答:您无法保存线程。一旦抛出异常,作为局外人,您最多可以获得堆栈跟踪。
使用 runInternal 技术进行包装将帮助您记录错误的堆栈跟踪,而不是让线程默默地终止。
但是,您真正想要在这里做的是附加一个调试器,例如 Eclipse,并将其设置为在捕获和未捕获的异常上暂停,直到找到您要查找的异常。这将在故障点暂停线程,而不会杀死它。
关于java - 处理默默终止线程的意外异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30648511/
我是一名优秀的程序员,十分优秀!