欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java异常处理中finally和return的结合使用

程序员文章站 2022-04-03 15:57:01
Java异常处理中finally和return的结合使用如果try语句块中有使用return,并且try语句块中没有任何异常时,程序首先会执行finally然后再执行return;但是对于基本类型的数据,finally的赋值是不会生效的,但是finally中操作引用类型的属性可以生效...

Java异常处理中finally和return的结合使用

如果try语句块中有使用return,并且try语句块中没有任何异常时,程序首先会执行finally然后再执行return;但是对于基本类型的数据,finally的赋值是不会生效的,但是finally中操作引用类型的属性可以生效

//程序正常执行,返回 20;finally中的赋值无效
public static int m2() {
    int i = 10;
    try {
        i = 20;
        return i;		
    }catch(Exception e){
        e.printStackTrace();
    }finally {
        i = 30;
        System.out.println("finally");
    }
    return i;
}

//程序正常执行,返回对象中的name属性值被修改为“李四”;finally中的赋值生效
public static User m3() {
    User u = new User();
    try {
        u.name = "张三";
        return u;
    }catch(Exception e) {
        e.printStackTrace();
    } finally {
        u.name = "李四";
    }
    return u;
}

对于基本类型的数据,finally的赋值是不会生效的;对于引用类型的数据可以生效。这是因为finally的赋值对于栈空间的数据是不会改变的,而对于引用类型的赋值发生在堆空间,没有改变地址位置所以它会生效。

本文地址:https://blog.csdn.net/hzHZKJ/article/details/109959978

相关标签: 菜鸟入门 java