记录一下看了Java异常try{}catch{}中的return机制之后做的一些测试,以及额外的补充总结
代码:
package com.atguigu.mvc.test;
import org.junit.Test;
/**
* @author
* @create 2023-04-26 20:37
* 研究 Java异常try{}catch{}中的return机制
*/
public class tryCatchTest {
public static String test1(){
String str="start";
try {
return str="try return";//这里定义为正常return
} catch (Exception e) {
return str="catch return";//这里定义为异常return
}finally {
return str="finally return";//这里定义为最终return
}
//总结1:最终return和方法return是互斥的,即在一个方法中,最终return和方法return只能写一个,否则编译无法通过(或者IDE会报错)
//return "method return";//这里定义为方法return
}
public static String test2(){
String str="start";
try {
return str="try return";//这里定义为正常return
} catch (Exception e) {
return str="catch return";//这里定义为异常return
}
// }finally {
// return str="finally return";//这里定义为最终return
// }
//总结2:当正常return和异常return都有的时候,最终return可有可无,但是方法return一定不能有,否则报错
//return "method return";//这里定义为方法return
}
public static String test3(){
String str="start";
try {
//return str="try return";//这里定义为正常return
} catch (Exception e) {
//return str="catch return";//这里定义为异常return
}finally {
return str="finally return";//这里定义为最终return
}
//总结3:当有最终return的时候,正常return和异常return可有可无
//return "method return";//这里定义为方法return
}
public static String test4(){
String str="start";
try {
return str="try return";//这里定义为正常return
} catch (Exception e) {
//return str="catch return";//这里定义为异常return
}
// finally {
// return str="finally return";//这里定义为最终return
// }
//总结4:当没有最终return的时候,要么一定要有正常return和异常return,要么一定要有方法return
//总结5:当没有最终return,而有方法return的时候,正常return和异常return最多存在一个
return "method return";//这里定义为方法return
}
public static String test5(){
String str="start";
try {
int i=1/0;
return str="try return";//这里定义为正常return
} catch (Exception e) {
//return str="catch return";//这里定义为异常return
}
// finally {
// return str="finally return";//这里定义为最终return
// }
//总结4:当没有最终return的时候,要么一定要有正常return和异常return,要么一定要有方法return
//总结5:当没有最终return,而有方法return的时候,正常return和异常return最多存在一个
return "method return";//这里定义为方法return
}
/**
* 测试返回值
* @param str
*/
public static void main(String[] str){
//总结6:当有正常return和方法return时,正常执行时返回的是try return
//System.out.println(test4());
//总结7:当有正常return和方法return时,异常执行时返回的是method return
//System.out.println(test5());
//总结8:当有正常return、方法return、最终return时,返回finally return
System.out.println(test1());
}
}
汇总:
- 总结1:最终return和方法return是互斥的,即在一个方法中,最终return和方法return只能写一个,否则编译无法通过(或者IDE会报错)
- 总结2:当正常return和异常return都有的时候,最终return可有可无,但是方法return一定不能有,否则报错
- 总结3:当有最终return的时候,正常return和异常return可有可无
- 总结4:当没有最终return的时候,要么一定要有正常return和异常return,要么一定要有方法return
- 总结5:当没有最终return,而有方法return的时候,正常return和异常return最多存在一个
- 总结6:当有正常return和方法return时,正常执行时返回的是try return
- 总结7:当有正常return和方法return时,异常执行时返回的是method return
- 总结8:当有正常return、方法return、最终return时,返回finally return