Java中try...catch...finally、throw和throws的区别和联系

在Java中经常使用的对异常的处理有:try...catch...finally、throw和throws 之前使用的时候经常混淆 今天花时间梳理了一下

1.try...catch...finally

try中存放可能出现异常的代码,catch处理try中抛出的异常

        int i = 0;
        try {
            System.out.println("开始进入try中代码");
            int a = 100 / i;
            System.out.println("执行try中异常之后代码");
        } catch (Exception e) {
            System.out.println("catch捕获异常");
        } finally {
            System.out.println("执行finally中代码");
        }
        System.out.println("执行try——catch——finally外代码");
    }

以上代码打印结果,打印出了以下结果

开始进入try中代码
catch捕获异常
执行finally中代码
执行try——catch——finally外代码

如果catch捕获并处理了异常之后,下面的代码继续执行。
而如果使用throw抛出了异常之后

 public static void main(String[] args) throws Exception {
        int i = 0;
        try {
            System.out.println("开始进入try中代码");
            int a = 100 / i;
            System.out.println("执行try中异常之后代码");
        } catch (Exception e) {
            System.out.println("catch捕获异常");
            throw e;
        } finally {
            System.out.println("执行finally中代码");
        }
        System.out.println("执行try——catch——finally外代码");
    }

以下是执行结果:

开始进入try中代码
执行finally中代码
Exception in thread "main" java.lang.ArithmeticException: / by zero

从上面代码的运行结果可以看出,try...catch...finally的fianlly中的代码是一定会执行的,而如果使用throw抛出一个异常后,程序不再往下执行。

posted @ 2023-05-11 19:47  老衲头不秃  阅读(140)  评论(0)    收藏  举报