【问题标题】:Uncaught exception in event listener事件侦听器中未捕获的异常
【发布时间】:2013-07-23 20:57:28
【问题描述】:

我在执行的方法中明确抛出异常并且没有捕获它,因此 EDT 异常处理程序应该捕获它,理想情况下 EDT 应该停止工作,但是当我单击框架的按钮时,EDT 再次启动。如何重启线程?

【问题讨论】:

  • 请澄清您的问题并向我们展示您已经尝试过的代码。

标签: java


【解决方案1】:

当线程抛出未被捕获的异常时,Thread.UncaughtExceptionHandler 将被调用。如果尚未设置,将调用默认的未捕获异常处理程序。处理程序将显示 stacktrace 并且很可能会重新启动,尽管文档没有具体说明所采取的步骤。

【讨论】:

【解决方案2】:

EDT 是一种特殊情况。每当它因抛出未捕获的异常而停止时,它就会重新启动。

这是一个很好的设计,因为它可以确保您的整个 GUI 不会因为某处未捕获的异常(例如按钮操作)而崩溃和烧毁。

【讨论】:

  • 您是否声称 EDT 会在出现异常时实际关闭?
  • 不,它有一个未捕获的异常处理程序,可以防止线程死亡。
  • @Kayaman 你有确认原始线程没有停止的参考吗?异常处理程序并不表示同一原始线程继续运行。参见例如stackoverflow.com/questions/3020757/…
  • 没错,它不一定是同一个线程实例。我会进行修改。
猜你喜欢
  • 2018-02-26
  • 1970-01-01
  • 2021-06-07
  • 2016-02-28
  • 2021-11-22
  • 1970-01-01
  • 2018-02-09
  • 1970-01-01
  • 2012-10-10
相关资源
最近更新 更多