是否可以处理(简单的日志写入)所有未处理的异常?
更详细地说,我需要记录代码中任何地方发生的任何异常,记录异常然后继续(这显然可能导致更多异常!)。
是否可以处理(简单的日志写入)所有未处理的异常?
更详细地说,我需要记录代码中任何地方发生的任何异常,记录异常然后继续(这显然可能导致更多异常!)。
您可以使用默认未捕获异常处理程序来捕获任何未处理的异常。
也可以为每个线程或线程组设置一个特定的处理程序。
您可以为此使用 AOP(面向方面的编程)。具体来说,您可以创建一个记录所有异常的方面。
如果您使用的是 spring,则可以为此使用AfterThrowing Advice Annotation。
这是一段可以帮助您的代码:
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());