try-catch-finally执行顺序

在 Java 中, try-catch-finally  语句块的执行顺序如下:

1. 首先执行  try  代码块中的语句。如果在  try  代码块中没有发生异常, try  代码块中的代码会正常执行完毕,接着会执行  finally  代码块中的代码。 finally  代码块无论如何都会执行(一些特殊情况如调用  System.exit()  除外)。

2. 如果在  try  代码块中发生了异常,程序会立即停止执行  try  代码块中剩余的代码,然后去匹配  catch  代码块。如果有匹配的  catch  代码块(即  catch  代码块捕获的异常类型与实际抛出的异常类型一致或者是其超类),则执行该  catch  代码块中的代码。执行完  catch  代码块后,无论  catch  代码块中是否有  return  语句,都会接着执行  finally  代码块中的代码。

3. 如果在  try  代码块中发生了异常,且没有匹配的  catch  代码块,那么异常会继续向外层抛出。在异常抛出之前, finally  代码块仍然会被执行。

下面是一个示例代码:

java

public class TryCatchFinallyExample {

    public static int test() {

        try {

            System.out.println("try block");

            return 1;

        } catch (Exception e) {

            System.out.println("catch block");

            return 2;

        } finally {

            System.out.println("finally block");

        }

    }

    public static void main(String[] args) {

        int result = test();

        System.out.println("result: " + result);

    }

}

在上述代码的  test  方法中, try  代码块中有一个  return  语句,但是在  return  之前会先执行  finally  代码块。因此,程序的输出是:

plaintext

try block

finally block

result: 1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值