根据您的情况,在Java应用程序中拦截所有异常的最简单方法是什么?
是否需要AOP提供这种功能,或者可以使用动态代理来完成,或者还有其他方法吗?
关于执行性能的影响,最简单的解决方案是否也是一个好的解决方案?
我想了解更多有关经验丰富的开发人员的解决方案,因为我试图掌握有关该主题的技术知识。
编辑:
感谢您已经提供了很好的建议,但是当前的建议不是仅适用于已检查的异常吗?那么,像NullPointerExceptions这样的未经检查的异常怎么办?如果可以捕获这些异常,并且捕获它们的应用程序将堆/堆栈转储以在崩溃时为您提供应用程序的当前上下文,那不是很有用吗?
最佳答案
在Nate和Konamiman ...,您的建议根本不起作用,也无法回答OP的问题。
如果OP从您的try/catch内部启动新线程怎么办?
例如:
public static void main(String[] args) {
try {
final Thread t = new Thread( new Runnable() {
public void run() {
System.out.println( 3 / Math.min(0,4) );
}
} );
t.start();
catch(Throwable t) {
...
}
}
这样您就不会捕获异常。
正确的方法是使用Thread.setDefaultUncaughtExceptionHandler。
关于java - 您将如何拦截所有异常?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1509346/