Java异常处理中finally和return的结合使用
程序员文章站
2022-07-09 14:34:14
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中finally和return的关系实例解析
-
C#异常处理中try和catch语句及finally语句的用法示例
-
Java中异常上抛和异常捕捉的具体使用案例
-
Java中stream处理中map与flatMap的比较和使用案例
-
Java编程中异常处理 try-catch-finally语句的一些分析
-
Java异常处理中finally和return的结合使用
-
C#异常处理中try和catch语句及finally语句的用法示例
-
Java 异常处理中对于 finally 的一些思考
-
Java中异常上抛和异常捕捉的具体使用案例
-
java的异常处理try, catch,throw,throws和finally