为什么堆栈跟踪Exception in thread "main" java.lang.ArithmeticException: 3
而不是Exception in thread "main" java.lang.ArithmeticException: 1
ArithmeticException("1")不是首先抛出吗?

 try{
        try{
            throw new ArithmeticException("1");
        }finally{
            throw new ArithmeticException("2");
        }
    }finally{
        throw new ArithmeticException("3");
    }

最佳答案

是的,首先引发"1"异常。然而:

您的finally会覆盖try块中引发的异常,因此finally异常是异常处理代码中唯一看到的那些异常。

正是由于这个原因,不要在finally块中抛出或返回。

有关更多详细信息,请参见Google's Error Prone documentation中此问题的描述。

09-05 10:40