Java代码中验证在 try 之前的代码如果出异常了 finally 是否还会执行

一、验证正常情况

1、代码

        String name1 = "张三";
        String name2 = null;
        try {
            if(name1.equals("张三")){
                System.out.println("name1 = " + name1);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            System.out.println("finally块执行了");
        }

输出:
Java代码中验证在 try 之前的代码如果出异常了 finally 是否还会执行_第1张图片

小结:
正常情况 finally 块中会执行

二、验证 try 内部出现异常情况

1、代码

        String name1 = "张三";
        String name2 = null;
        try {
            if(name1.equals("张三")){
                System.out.println("name1 = " + name1);
            }
            //模拟空指针异常
            if(name2.equals("李四")){
                System.out.println("name2 = " + name2);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            System.out.println("finally块执行了");
        }

 输出:
Java代码中验证在 try 之前的代码如果出异常了 finally 是否还会执行_第2张图片

小结:
 try 内部出现异常情况 finally 块中也会执行

三、验证 try (外部)之前出现异常情况

1、代码

        String name1 = "张三";
        String name2 = null;

        //模拟空指针异常
        if(name2.equals("李四")){
            System.out.println("name2 = " + name2);
        }
        try {
            if(name1.equals("张三")){
                System.out.println("name1 = " + name1);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            System.out.println("finally块执行了");
        }

输出:

小结:
 try (外部)之前出现异常情况 finally 块中不会执行,整个程序终止了,不会向下继续执行

总结:
1、正常情况 finally 块中会执行
2、 try 内部出现异常情况 finally 块中也会执行
3、 try (外部)之前出现异常情况 finally 块中不会执行,整个程序终止了,不会向下继续执行

你可能感兴趣的:(Java基础,Lambda和Stream流,异常和开发经验总结,java)