是否可以处理(简单的日志写入)所有未处理的异常?
更详细地说,我需要记录代码中任何地方发生的任何异常,记录异常,然后继续(这可能会导致更多异常!)。
答案 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());