为什么堆栈跟踪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中此问题的描述。