当我在 Eclipse 中以调试模式运行我的代码时,我能够找到代码发生故障的位置,但理事会上没有显示异常。在调试模式下,我注意到在抛出异常后,它似乎被正在运行的线程吞噬,并且程序继续运行(或至少继续运行。程序本身变得无法使用)。有没有办法让线程中抛出的错误更加明显?
如果我误解了调试器在遇到异常时通过代码所采用的路径,我深表歉意。它看来,它被线程抓住了。无论如何,每当我编写线程代码时,我都很难找出错误所在。
当我在 Eclipse 中以调试模式运行我的代码时,我能够找到代码发生故障的位置,但理事会上没有显示异常。在调试模式下,我注意到在抛出异常后,它似乎被正在运行的线程吞噬,并且程序继续运行(或至少继续运行。程序本身变得无法使用)。有没有办法让线程中抛出的错误更加明显?
如果我误解了调试器在遇到异常时通过代码所采用的路径,我深表歉意。它看来,它被线程抓住了。无论如何,每当我编写线程代码时,我都很难找出错误所在。
您可能希望向线程注册一个 UncaughtExceptionHandler,您可以在其中执行所需的日志记录。
使用 Eclipse 调试器,您可以配置一个断点以在Exception
抛出某些指定时中断。
要进行此设置:
在调试器的断点选项卡上,按J!按钮。这将使您能够添加 Java 异常断点。您还可以选择暂停抛出异常的 JVM 或线程。
就在您指定Exception
的被抛出之前,调试器将根据您的选择暂停线程或 JVM(所有线程) 。此时,您可以开始诊断问题。这不是万无一失的,但它会给你一个很好的起点来调试你的问题。
如果不知道抛出了什么异常,可以选择java.lang.Exception
. 这将暂停任何Exception
抛出。