根据您的情况,在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/

10-10 13:38
查看更多