最终阻塞后无法到达的语句

时间:2018-09-13 12:45:17

标签: java exception

我正在学习Java中的异常,在此示例中我面临编译错误:

public class FinallyExceptionExample {
    public static void main (String[] args) throws Exception {
        try {
            System.out.println("1");
            throw new Exception();
        } finally{
            System.out.println("3");
        }
        System.out.println("4");
    }
}

该行的异常是“无法到达的语句”:

System.out.println("4");

我想知道为什么我会收到此错误,通常在我们最终继续执行代码之后?

2 个答案:

答案 0 :(得分:0)

您抛出一个异常而没有捕获到它。这将导致代码执行提前终止,并且永远不会到达最后一行。

答案 1 :(得分:0)

来自Oracle documentation

  

finally 块始终在try块退出时执行。这样可以确保即使发生意外异常,也可以执行finally块。但是,最后,它不仅对异常处理有用,它还使程序员避免因返回,继续或中断而意外地跳过清理代码。将清理代码放在finally块中始终是一个好习惯,即使在没有例外的情况下也是如此。

请记住:finally没有捕获到异常!