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;
}
}
}