异常处理订购

时间:2017-12-08 16:09:21

标签: java exception

为什么堆栈跟踪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");
    }

1 个答案:

答案 0 :(得分:4)

是的,首先抛出"1"异常。但是:

您的finally会覆盖try块中抛出的异常,因此finally异常是异常处理代码所见的唯一异常。

出于这个原因,不要抛出或返回最后一个区块。

有关详细信息,请参阅Google's Error Prone documentation中有关此问题的说明。