前言 由于总是搞不清楚try/catch中的一个执行顺序,返回结果。所以总结一下 1.finally没有return 时,可以看出finally确实在return之前执行了 public static void main(String[] args) { int aa = test1(); System.out.println(aa); } public static int test1(){ try{ System.out.println("try"); return 0; }catch(Exception e){ System.out.println("catch"); return 1; }finally { System.out.println("finally"); } } //结果 //try //finally //0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 2. finally有return 时,会覆盖其他语句中的return public static void main(String[] args) { int aa = test1(); System.out.println(aa); } public static int test1(){ try{ System.out.println("try"); return 0; }catch(Exception e){ System.out.println("catch"); return 1; }finally { System.out.println("finally"); return 2; } } //结果 //try //finally //2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 3.finally中对基本数据类型没有影响 public static int test1(){ int result = 6; try{ System.out.println("try"); return result; }catch(Exception e){ System.out.println("catch"); return 1; }finally { System.out.println("finally"); result = 3; } } //结果try //finally //6 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 4.finally中对引用型数据有影响 public static StringBuffer test1(){ StringBuffer str = new StringBuffer("I"); try{ System.out.println("try"); return str; }catch(Exception e){ System.out.println("catch"); return null; }finally { System.out.println("finally"); str.append("am"); } } //结果try //finally // I am 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 5.当try/catch外面有异常,finally不执行 public static int test2(){ int a = 5/0; try{ System.out.println("try"); return a; }catch(Exception e){ System.out.println("catch"); return 2; }finally { System.out.println("finally"); } } 1 2 3 4 5 6 7 8 9 10 11 12 Exception in thread "main" java.lang.ArithmeticException: / by zero at com.jxl.face.Controller.EnumTest.test2(EnumTest.java:29) at com.jxl.face.Controller.EnumTest.main(EnumTest.java:19) 1 2 3 4 6.异常在try/catch里面,finally无return public static int test2(){ try{ int a = 5/0; System.out.println("try"); return a; }catch(Exception e){ System.out.println("catch"); return 2; }finally { System.out.println("finally"); } } //catch //finally //2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 7.异常在try/catch里面,finally有return public static int test2(){ try{ int a = 5/0; System.out.println("try"); return a; }catch(Exception e){ System.out.println("catch"); return 2; }finally { System.out.println("finally"); return 3; } } //catch //finally //3
本文转载自:https://www.cnblogs.com/exmyth/p/10744184.html
举报
打赏
0 赞
0 收藏
分享
加载中

其他人还在看
本文是《微服务治理实践》系列篇的第六篇文章,为大家介绍微服务测试中的自动化回归:基于微服务契约信息快速编排被测服务、管理自动化测试用例。可视化用例编辑界面,丰富的预置检查点、内置变量,支持自定义变量...
前言 在前说明:好久没有更新博客了,这一年在公司做了好多事情,包括代码分析和热部署替换等黑科技,一直没有时间来进行落地写出一些一文章来,甚是可惜,趁着中午睡觉的时间补一篇介绍性的文章吧。 首先热部署的...
本文主要是介绍交易所内存撮合引擎中,大量的订单匹配撮合的过程对GC的影响 在撮合引擎运行的过程中,有大量的不能成交的单子,会被挂在订单薄上并上时间不能被撮合,这些单子会进入老年代且每次新的单子来了都将...
Docker 容器健康检查指的是在 Dockerfile 中使用 HEALTHCHECK 指令对容器的运行状态进行检查, 并在 docker ps 的 STATUS 栏显示 healthy/unhealthy。 HEALTHCHECK 指令有两种格式: HEALTHCHECK [OPTIONS] CMD ......
本文已经收录进 Github 95k+ Star 的Java项目JavaGuide 。JavaGuide项目地址 : https://github.com/Snailclimb/JavaGuide 。 作者:Miki-byte-1024 & Snailclimb 每次问到 Spring Boot, 面试官非常喜欢问这个问题......
Quarkus 是一个目前非常火的 Java 应用开发框架,定位是轻量级的微服务框架。,Quarkus 提供了优秀的容器化整合能力,相较于传统开发框架(Spring Boot)有着更快的启动速度、更小的内存消耗、更短的服务响应。 ...
在使用分布式锁进行互斥资源访问时候,我们很多方案是采用redis的实现。 固然,redis的单节点锁在极端情况也是有问题的,假设你的业务允许偶尔的失效,使用单节点的redis锁方案就足够了,简单而且效率高。 redis锁...
点上方蓝字关注公众号「前端从进阶到入院」 精选原创好文助你进入大厂 文章转载自公众号「iCSS前端趣闻」 今天逛博客网站 -- shoptalkshow[1],看到这样一个界面,非常有意思: 觉得它的风格很独特,尤其是其中一...
背景 大家在日常工作中,往往需要对数据库的表结构做变更,一般涉及到增删字段,修改字段属性等ALTER的操作。然而,在大表场景下,特别是千万级、亿级的大表,如果处理不当。这些操作往往会引发锁表的巨大隐患,特...
Terminating Pod 是业务容器化后遇到的一个典型问题,诱因不一。本文记录了网易数帆-轻舟 Kubernetes 增强技术团队如何一步步排查,发现 Docker Volume 目录过多导致 Terminating Pod 问题的经历,并给出了解决方...
选择专区和圈子:{{title}}
{{o.name}}
{{m.name}}