3

是否可以处理(简单的日志写入)所有未处理的异常?

更详细地说,我需要记录代码中任何地方发生的任何异常,记录异常然后继续(这显然可能导致更多异常!)。

4

3 回答 3

5

您可以使用默认未捕获异常处理程序来捕获任何未处理的异常。

也可以为每个线程或线程组设置一个特定的处理程序。

于 2012-05-14T05:57:37.230 回答
1

您可以为此使用 AOP(面向方面​​的编程)。具体来说,您可以创建一个记录所有异常的方面。

如果您使用的是 spring,则可以为此使用AfterThrowing Advice Annotation

于 2012-05-14T06:04:04.570 回答
0

这是一段可以帮助您的代码:

public class MyDefaultExceptionHandler extends DefaultExceptionHandler
  {

  private UncaughtExceptionHandler defaultUEH;

  public MyDefaultExceptionHandler() 
    {
    this.defaultUEH = Thread.getDefaultUncaughtExceptionHandler();
    }

  @Override
  public void uncaughtException(Thread t, Throwable e) 
    {
    //print anything you wish about the Throwable e :getStackTrace(), getCause(), getClass()...
    defaultUEH.uncaughtException(t, e); //this will call the default handling of the exception (crash...)
    }
  }
… 
//in the main app:
Thread.setDefaultUncaughtExceptionHandler(new MyDefaultExceptionHandler());
于 2012-05-14T06:09:26.800 回答