【问题标题】:Catching exceptions from all threads? [duplicate]从所有线程中捕获异常? [复制]
【发布时间】:2013-04-16 21:48:25
【问题描述】:

最近我在我的一个程序中使用了Task。基本上可以说Task 中包含的代码是在另一个线程中执行的。该线程中引发了异常,但我从未注意到这一点,因为 Eclipse 没有显示它(至少在控制台中没有)。

那么,如何确保我了解所有线程的异常情况?

感谢您对此的任何提示!

更新:我想知道是否有一种不涉及代码修改/改编的方法 - 因为人们很容易忘记这一点。 Eclipse 中的任何设置?

【问题讨论】:

  • 您可以在线程中设置 UncaughtExceptionHandler 来捕获异常。 (我不知道 Java 中的 Task 类。)
  • 谢谢大家,反映你的答案我更新了我的问题。
  • 好吧,我希望 Eclipse 调试器通过适当的设置,向您显示所有线程中发生的异常。
  • @HotLicks:您知道如何为此配置 Eclipse 吗?我试过eclipse.org/forums/index.php/t/353989,但假设你在调试视图中看到了一个挂起的线程,这对我来说甚至都不是。
  • 不,我尽可能避免使用 Eclipse。但是您很可能需要在 UncaughtExceptionHandler 中设置断点。

标签: java eclipse debugging


【解决方案1】:

如果说

我想知道是否有一种不涉及代码修改/改编的方法 - 因为人们很容易忘记这一点。

你的意思是,你可能忘记为每个线程编码/设置它,那么事实并非如此。

Thread.setDefaultUncaughtExceptionHandler

是一个静态方法,因此您只需为整个 java 应用程序设置一次。任何线程上的任何未捕获的异常都将在该方法中结束。

http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.UncaughtExceptionHandler.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-26
    • 1970-01-01
    • 2012-10-16
    • 2011-09-26
    • 2010-12-27
    相关资源
    最近更新 更多