处理所有未处理的异常

时间:2012-05-14 05:52:26

标签: java exception exception-handling

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

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

3 个答案:

答案 0 :(得分:5)

您可以使用Default Uncaught Exception Handler来捕获任何无法处理的例外情况。

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

答案 1 :(得分:1)

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

如果您使用的是弹簧,则可以使用AfterThrowing Advice Annotation进行此操作。

答案 2 :(得分: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());