package chapter03;
/**
* return finally 测试代码
* 注意
* 1 return代码只会执行一次 如果finally中return 则执行完finally中return 方法结束
* 2 finaly中代码对返回变量的修改,注意test4和test5的区别
*/
public class Test {
public static void main(String[] args) {
System.out.println("--------------【test1】-----------------------");
System.out.println(test1());
System.out.println("--------------【test2】-----------------------");
System.out.println(test2());
System.out.println("--------------【test3】-----------------------");
System.out.println(test3());
System.out.println("--------------【test4】-----------------------");
System.out.println(test4());
System.out.println("--------------【test5】-----------------------");
System.out.println(test5());
/*
* 执行结果如下
*
* --------------【test1】-----------------------
* finally模块被执行
* 1
* --------------【test2】-----------------------
* catch
* finally模块被执行
* 2
* --------------【test3】-----------------------
* finally模块被执行
* 0
* --------------【test4】-----------------------
* finally模块被执行
* 0
* --------------【test5】-----------------------
* finally模块被执行
* 1
*/
}
/**
* finally模块被执行
* 1
*/
public static int test1(){
try {
return 1;
} finally {
System.out.println("finally模块被执行");
}
}
/**
* catch
* finally模块被执行
* 2
*/
private static int test2() {
try {
int a = 8/0;
return 1;
}catch (Exception e) {
System.out.println("catch");
return 2;
}finally{
System.out.println("finally模块被执行");
}
}
/**
* finally模块被执行
* 0
*/
private static int test3() {
try {
int a = 8 / 0;
return 1;
} catch (Exception e) {
return 2;
} finally {
System.out.println("finally模块被执行");
return 0;
}
}
/**
*finally模块被执行
*0
*/
private static int test4() {
int result = 0;
try {
return result;
}finally{
System.out.println("finally模块被执行");
result = 1;
}
}
/**
*finally模块被执行
*1
*/
private static int test5() {
int result = 0;
try {
return result;
}finally{
System.out.println("finally模块被执行");
result = 1;
return result;
}
}
}
本文深入探讨了Java中finally块与return语句的交互作用,通过五个具体测试案例,展示了不同场景下finally块如何影响方法的返回值。关键点包括:1)finally块中的return会覆盖try或catch块中的return;2)finally块可以修改返回变量,但其效果取决于是否在finally中有return语句。
264

被折叠的 条评论
为什么被折叠?



