当前位置:  开发笔记 > 编程语言 > 正文

如何在Java中捕获AWT线程异常?

如何解决《如何在Java中捕获AWT线程异常?》经验,为你挑选了2个好方法。

我们想在我们的应用程序日志中跟踪这些异常 - 默认情况下,Java只是将它们输出到控制台.



1> ToYonos..:

从Java 7开始,你必须采用不同的方式,因为sun.awt.exception.handlerhack不再起作用了.

这是解决方案(来自Java 7中的Uncaught AWT Exceptions).

// Regular Exception
Thread.setDefaultUncaughtExceptionHandler(new ExceptionHandler());

// EDT Exception
SwingUtilities.invokeAndWait(new Runnable()
{
    public void run()
    {
        // We are in the event dispatching thread
        Thread.currentThread().setUncaughtExceptionHandler(new ExceptionHandler());
    }
});



2> shemnon..:

美国东部时间和美国东部时间之外的未捕获例外情况有所区别.

另一个问题是两者都有解决方案,但如果你只想让EDT部分被咀嚼......

class AWTExceptionHandler {

  public void handle(Throwable t) {
    try {
      // insert your exception handling code here
      // or do nothing to make it go away
    } catch (Throwable t) {
      // don't let the exception get thrown out, will cause infinite looping!
    }
  }

  public static void registerExceptionHandler() {
    System.setProperty('sun.awt.exception.handler', AWTExceptionHandler.class.getName())
  }
}


不需要抓住扔掉的东西.没有无限循环.java.awt.EventDispatchThread.handleException正在捕获任何异常.
推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有