publicclass TestTry {

publicstaticvoid main(String[] args) {

TestTry t = new TestTry();

System.out.println(t.getString() + " ---- return执行结束!");

}

public String getString() {

String testString = "abc";

try {

System.out.println("执行try!");

//           int a = 9 / 0;

return testString;

} catch (Exception e) {

System.out.println("执行catch!");

return testString;

} finally {

System.out.println("执行finally!");

}

}

}

执行结果:

[1]执行try!
[2]执行finally!
[3]abc ---- return执行结束!

-------------------------------------------------------------------
在try语句中,在执行return语句时,要返回的结果已经准备好了,就在此时,程序转到finally执行了。

在转去之前,try中先把要返回的结果存放到不同于a的局部变量中去,执行完finally之后,在从中取出返回结果,

因此,即使finally中对变量a进行了改变,但是不会影响返回结果。验证实例:

publicclass Test11 {

publicstaticvoid main(String[] args) {

int b = f();

System.out.println(b);

}

privatestaticint f() {

int a = 10;

try {

a += 10;

System.out.println("try");

//          int e = 3 / 0;

a += 10;

return a;

} catch (Exception ex) {

System.out.println("catch");

return a;

} finally {

System.out.println("finally");

a += 100;

}

}

}

执行结果:

[1]  try
[2]  finally
[3]  30

结论:

1.不管出没出现异常,finally块中的语句都会执行;
2.当try或catch块中有return语句时,finally块中的语句仍会执行;
3.finally块中的语句是在return语句执行之后才执行的,即函数返回值是在finally块中语句执行前确定的;
4.finally块中不主张包含return语句,如果加了return在finally块中,将返回这个值。

总结:finally在return前执行,在finally的操作,不会改变已经确定的return的值。

转载于:https://blog.51cto.com/sun316737332/1253689

try { } catch{ } finally{ } 执行顺序总结相关推荐

  1. Promise—关于catch(你真的了解catch的执行顺序吗)

    一.问题 今天突然被同事问到一个问题,以下代码怎么输出: Promise.all([new Promise(res => res(0)), new Promise((res, rej) => ...

  2. try catch嵌套执行顺序测试

    分享一段测试try catch 执行顺序和那些代码后续执行,那么不执行的代码: @Testpublic void testTryCatch(){try {System.out.println(&quo ...

  3. 细琢磨,try catch finally 执行顺序与返回值

    try catch finally 常见格式如下: try{//应用代码}catch(Exception e){//异常捕捉处理}finally{//资源释放.流关闭等等 } 通常执行顺序: try有 ...

  4. try catch finally 执行顺序问题

    public static void main(String[] args) {System.out.println(abc());}public static Integer abc(){Syste ...

  5. try catch finally执行顺序_技术大佬:我去,你竟然还在用 try–catch-finally

    二哥,你之前那篇 我去 switch 的文章也特么太有趣了,读完后意犹未尽啊,要不要再写一篇啊?虽然用的是 Java 13 的语法,对旧版本不太友好.但谁能保证 Java 不会再来一次重大更新呢,就像 ...

  6. python try catch finally执行顺序_对python中的try、except、finally 执行顺序详解

    如下所示: def test1(): try: print('to do stuff') raise Exception('hehe') print('to return in try') retur ...

  7. java try、catch、finally及finally执行顺序详解

    1.为什么要用finally 先看一个没有finally的异常处理try-catch语句: 假设count为要使用到的资源,并且用完要求释放此资源.那么我们可以把释放资源的语句放到try-catch后 ...

  8. java catch中 return_JAVA中try、catch、finally带return的执行顺序总结

    try catch  以后只要没有抛出新异常或者return,代码会继续往下执行的. 异常处理中,try.catch.finally的执行顺序,大家都知道是按顺序执行的.即,如果try中没有异常,则顺 ...

  9. try、catch、finally的执行顺序

    有这样一段代码 : public class EmbededFinally { public static void main(String args[]){ int result; try { Sy ...

最新文章

  1. Dynamic Rankings——带修改区间第k大
  2. Python进阶(2)
  3. P3201-[HNOI2009]梦幻布丁【启发式合并,链表】
  4. 你胆敢不加break试试?
  5. Java并发——线程安全
  6. Web后端学习笔记 Flask(10)CSRF攻击原理
  7. 【动态规划】01背包:P1049 装箱问题
  8. 【2018.1.14】关于本蒟蒻
  9. Atitit. BigConfirmTips 控件 大数据量提示确认控件的原理and总结O9
  10. Java学习笔记——JDBC
  11. C++封装Mysql数据库
  12. 使用七牛云存储图片案例
  13. 刀哥咱俩探讨一下重构的手法
  14. 鸿蒙系统1004无标题,华为P50 Pro外观基本确认:居中开孔全面屏首发鸿蒙操作系统...
  15. QT在windows上检测USB端口插拔
  16. [PHP] B2B2C商品模块数据库设计
  17. 100的阶层真的算不出来吗?
  18. HTML 样式style
  19. 晶体三极管原理及应用
  20. C语言三个整蛊程序,很强!!

热门文章

  1. ITK:将vtkImageData转换为itk :: Image
  2. VTK:可视化之BackgroundTexture
  3. VTK:PolyData之NullPoint
  4. VTK:图片之ImageEllipsoidSource
  5. VTK:几何对象之Sphere
  6. QML识别模块identifiedmodules
  7. Qt Creator将应用程序部署到通用远程Linux设备
  8. C语言quick sort快速排序的算法(附完整源码)
  9. 如何在线把网站html生成xml文件_Sitemap在线生成器,网站地图在线生成工具
  10. 06_clickhouse、表和列的TTL规则与实践、表和列的TTL、列级TTL、表级TTL、列级TTL示例、表级TTL示例