在swing线程中捕获异常

Col*_*lin 5 java swing exception-handling

如何从java swing向log4j日志发送异常?

我们已经完成了许多代码并且它做了很多:

mytable.getSelectionModel().addListSelectionListener(
        new ListSelectionListener() {
            @Override
            public void valueChanged(ListSelectionEvent e) {
                ... no try catch
            }
        });
Run Code Online (Sandbox Code Playgroud)

没有尝试/捕获.应用程序向控制台发送npe异常.我们在log4j中需要它.但是不想改变所有这些代码(像这样的100行).我们能做什么?

Nat*_*hes 7

您可以设置一个未捕获的异常处理程序,该处理程序将记录您的应用程序抛出的任何内容.

在Swing应用程序的主要方法中添加以下行:

Thread.setDefaultUncaughtExceptionHandler(new LoggingExceptionHandler());
System.setProperty("sun.awt.exception.handler", LoggingExceptionHandler.class.getName());
Run Code Online (Sandbox Code Playgroud)

然后像这样实现异常处理程序:

package com.initech.tps;

import java.lang.Thread.UncaughtExceptionHandler;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class LoggingExceptionHandler implements UncaughtExceptionHandler
{

  private static final Logger logger = LoggerFactory.getLogger(LoggingExceptionHandler.class);

  @Override
  public void uncaughtException(Thread t, Throwable e)
  {
      logger.error("caught exception in thread: " + t.getName(), e);
  }
}
Run Code Online (Sandbox Code Playgroud)