try catch finally 与return的执行顺序
来源:互联网 发布:螺旋管换热器计算软件 编辑:程序博客网 时间:2024/05/21 19:46
去年笔试的时候遇到的题,当时就不太确定,面试的时候面试官说你回去写写代码试试,然而饿哦只是看了看书,直到今天才总结出来,把所有的代码补上了。
1.try-catch-finally结构后+return
(1)try中无异常
public class Test { public static void main(String[] args){ String test = test(); System.out.println("test:"+test); } private static String test() { try{ System.out.println("try"); }catch(Exception e){ System.out.println("catch"); }finally{ System.out.println("finally"); } return "abc"; }}
执行结果:
try
finally
test:abc
(2)try中有异常
private static String test() { try{ System.out.println("try"); String str=null; str.toString(); }catch(Exception e){ System.out.println("catch"); }finally{ System.out.println("finally"); } return "abc"; }
执行结果:
try
catch
finally
test:abc
2.try{ return; }catch(){} finally{} +return
(1)try无异常
public class Test { public static void main(String[] args){ String test = test(); System.out.println("test:"+test); } private static String test() { try{ System.out.println("try"); return "123"; }catch(Exception e){ System.out.println("catch"); }finally{ System.out.println("finally"); } return "abc"; }}
运行结果:
try
finally
test:123
(2)try有异常
public class Test { public static void main(String[] args){ String test = test(); System.out.println("test:"+test); } private static String test() { try{ System.out.println("try"); String str=null; str.toString(); return "123"; }catch(Exception e){ System.out.println("catch"); }finally{ System.out.println("finally"); } return "abc"; }}
运行结果:
try
catch
finally
test:abc
3.try{ } catch(){return;} finally{} +return;
public class Test { public static void main(String[] args){ String test = test(); System.out.println("test:"+test); } private static String test() { try{ System.out.println("try"); String str=null; str.toString(); }catch(Exception e){ System.out.println("catch"); return "456"; }finally{ System.out.println("finally"); } return "abc"; }}
运行结果:
try
catch
finally
test:456
4.try{ return; }catch(){} finally{return;}
(1)try无异常
public class Test { public static void main(String[] args){ String test = test(); System.out.println("test:"+test); } private static String test() { try{ System.out.println("try"); return "123" }catch(Exception e){ System.out.println("catch"); }finally{ System.out.println("finally"); return "789" } }}
运行结果:
try
finally
test:789
(2)try有异常
public class Test { public static void main(String[] args){ String test = test(); System.out.println("test:"+test); } private static String test() { try{ System.out.println("try"); String str=null; str.toString(); return "123"; }catch(Exception e){ System.out.println("catch"); }finally{ System.out.println("finally"); return "789"; } }}
运行结果:
try
catch
finally
test:789
5.try{} catch(){return;}finally{return;}
public class Test { public static void main(String[] args){ String test = test(); System.out.println("test:"+test); } private static String test() { try{ System.out.println("try"); String str=null; str.toString(); }catch(Exception e){ System.out.println("catch"); return "456"; }finally{ System.out.println("finally"); return "789"; } }}
运行结果:
try
catch
finally
test:789
6.try{ return;}catch(){return;} finally{return;}
(1)try无异常
public class Test { public static void main(String[] args){ String test = test(); System.out.println("test:"+test); } private static String test() { try{ System.out.println("try"); return "123"; }catch(Exception e){ System.out.println("catch"); return "456"; }finally{ System.out.println("finally"); return "789"; } }}
运行结果:
try
finally
test:789
(2)try有异常
public class Test { public static void main(String[] args){ String test = test(); System.out.println("test:"+test); } private static String test() { try{ System.out.println("try"); String str=null; str.toString(); return "123"; }catch(Exception e){ System.out.println("catch"); return "456"; }finally{ System.out.println("finally"); return "789"; } }}
运行结果:
try
catch
finally
test:789
总结:
(1)若finally{}中有return,这个先被执行,其余的return都会被屏蔽掉不能执行(当然这种情况下finally{}后就没有return语句了)
(2)若finally{}中无return,这个时候return语句的优先执行的就是try里面,try里面没有return,又进入异常了,就执行catch里面的return,若try,catch,都没有return,就执行finally{}以后的return语句。
- try, catch, finally, return的执行顺序
- try、catch、finally、return的执行顺序
- try、catch、finally、return的执行顺序
- try catch finally return 的执行顺序
- try、catch、finally、return的执行顺序
- try catch finally return 的执行顺序
- try catch finally return 的执行顺序
- try-catch-finally-return的执行顺序
- try、catch、finally、return的执行顺序
- try catch finally return 的执行顺序
- java中try catch finally与return的执行顺序
- try catch finally与return的执行顺序
- try catch finally与return的执行顺序
- try catch finally 与return的执行顺序
- try-catch-finally中finally的break,return执行顺序
- JAVA try..catch..finally与return执行顺序研究
- try-catch-finally return执行顺序
- try catch finally return 执行顺序
- poj1061
- java8新特性 lambda Stream map(函数式编程)
- href="javascript:void(0);"在火狐,qq浏览器下没有效果,还是会打开空白页
- 配置PHPStorm主题颜色为黑色
- C++构造函数传参与返回值时的优化
- try catch finally 与return的执行顺序
- 细说JDK动态代理的实现原理
- 使用CSS将图片转换成黑白(灰色、置灰)
- Spring MVC ajax请求
- 模板
- java鬼混笔记:springboot之thymeleaf 3:th:each遍历
- 17.11.18,web学习第六天,还有一年,努力吧青年
- CentOS7 添加FTP用户并设置权限
- 关于VMware的三种网络连接方式