为什么堆栈跟踪Exception in thread "main" java.lang.ArithmeticException: 3
而不是Exception in thread "main" java.lang.ArithmeticException: 1
?
Isn&#t; t ArithmeticException("1")
先被抛出?
try{
try{
throw new ArithmeticException("1");
}finally{
throw new ArithmeticException("2");
}
}finally{
throw new ArithmeticException("3");
}
答案 0 :(得分:4)
是的,首先抛出"1"
异常。但是:
您的finally
会覆盖try块中抛出的异常,因此finally
异常是异常处理代码所见的唯一异常。
出于这个原因,不要抛出或返回最后一个区块。
有关详细信息,请参阅Google's Error Prone documentation中有关此问题的说明。