- 浏览: 2731066 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (1313)
- JS (65)
- CSS (6)
- html (30)
- dweamweaver工具相关 (2)
- Spry (1)
- DB (103)
- p2p (1)
- java (405)
- .net (3)
- oracle (24)
- struts (18)
- myeclipse (15)
- linux (49)
- SQL SERVER2008 (101)
- jsp (21)
- resume (1)
- other (1)
- ajax (3)
- 云计算 (2)
- excel (32)
- vss (1)
- 警戒 (1)
- eclipse (21)
- c (1)
- dialog designer (7)
- axis1.4 (4)
- webservice (11)
- CTI (1)
- svn (8)
- spring (27)
- tomcat (13)
- log4j (14)
- 网络应用 (7)
- mysql (59)
- bat (4)
- jdbc (1)
- 正式表达式 (1)
- hibernate (27)
- iphone (2)
- 系统应用 (107)
- servlet (3)
- vmware (2)
- php (12)
- JQuery (30)
- avaya (5)
- postgresql (19)
- java面试 (1)
- rose (1)
- Socket (1)
- xml (2)
- PowerDesign (3)
- visio (1)
- jstl (4)
- informix (2)
- assemble (2)
- English Study (2)
- IOS (9)
- CMMI (1)
- outlook (4)
- poi (1)
- hadoop (5)
- SAE (3)
- jor (1)
- jquery mobile (1)
- git (11)
- mina (1)
- ibatis (2)
- wordpress (2)
- 支付宝 (1)
- struts2 (14)
- apns (1)
- html5 (1)
- xampp (2)
- uml (2)
- 项目管理 (1)
- 敏捷开发 (1)
- 设计模式 (2)
- spark (1)
- maven (9)
- 微信公众平台 (1)
- json (2)
- junit (1)
- quartz (2)
- redis (2)
- memcache (1)
- android (3)
- 红杏 (1)
- postman (1)
- mybatis (5)
- iplat4j (1)
- windows (1)
- logback (1)
- Netty (1)
- wiki (1)
- dubbo (1)
- sonar (2)
- jenkins (2)
- mac (10)
- office (4)
- groovy (1)
- intellij (6)
- zookeeper (2)
- 诛仙 (1)
- MQ (2)
- docker (1)
- 2222 (0)
最新评论
-
代码改变生活:
虽然代码敲的头疼的要命,但是依然要感谢你,感谢您共享!!!!开 ...
jxl读取excel日期相差8小时 -
www3837:
org.slf4j.Logger 下载 -
hyztty:
wait_timeout = 86400 interacti ...
druid连接池 -
niaodanwangzi:
连接池可不是给你检测连接状态用的。是为了连接复用,减少连接数。 ...
druid连接池 -
supermine0903:
学习了 啦啦啦
多个路由器同时上网
网上看到一些关于在try{}catch{}finally{}中加入return后的执行顺序的讨论,
不衷一是,于是自己写了个例子测试,过程和结论如下。
在try{}catch{}finally{}程序中,无论是否发生异常且无论try或catch语句块中包含什么代码("System.exit();"除外),finally语句块中的代码都会被执行。但当try语句块中包含return语句时执行顺序有点不一样。
场景一:
public class TestFinally ...{ public static void main(String[] args) ...{ System.out.print(returnValue()); } public static int returnValue()...{ int i = 0; // L1 try...{ i = 1; // L2 return i = i + 5; // L3 } finally ...{ i = 2; // L4 } } }
returnValue()方法中的语句执行顺序为"L1, L2, L3, L4, L3",最后执行的是try语句块中的return语句,但returnValue()的返回值是6,看起来似乎finally语句块中对变量i的赋值未起作用,但实际上Debug的话会发现执行完finally语句块后转到return语句时变量i的值是新值2,但为什么return的是6呢?个人分析认为这是因为每一次执行L3时实际上不执行return,而是执行了"i = i + 5;"(这时i==6)并将i值存入某个临时变量 "xTemp = i; "(xTemp == 6),而后执行了finally中的 "i = 2;",最后执行try语句块中的return语句实际上"return xTemp;"。
所以虽然执行了finally块,但似乎没起作用。
场景二:
public class TestFinally ...{ public static void main(String[] args) ...{ System.out.print(returnValue()); } public static int returnValue()...{ int i = 0; // L1 try...{ i = 1; // L2 return i = i + 5; // L3 } finally ...{ i++; // L4 return i; // L5 } } }
此时returnValue()方法中的语句执行顺序为"L1, L2, L3, L4, L5",最后执行的是finally语句块中的return语句,返回值是7。即try语句块中的return语句中的"i = i + 5;"得到了执行,最后由finally语句块中的return语句返回,try语句块中的return的返回功能不起作用了。
文章出处:http://www.diybl.com/course/3_program/java/javajs/2007917/71604.html
发表评论
-
普通类和线程类的区别
2017-02-18 21:44 1244假设一个类是SubThread,它的init( ... -
最近一些心得
2017-02-08 16:01 8891、Mac starUML在导出png图片时,不要用s ... -
druid连接池
2016-09-14 16:00 5177环境:Ubuntu+Mysql5.5 近期一直报 ... -
罕见问题记录
2016-08-24 17:56 9151、如果提示对catalina.out无权限。 此时 ... -
Java Security
2016-08-24 17:50 952背景: 公司有某些场景需要向第三方提供服务, ... -
kafka java demo
2016-07-10 20:51 6756环境:ubuntu10 2台(32位)+JDK1.8(32 ... -
autowired resource component
2016-05-11 15:23 941背景:同样的bean类型有2个。 尝试用autowire ... -
eclipse 部署spring源码经验之谈
2016-05-08 23:41 16991、junit加载applicationCont ... -
main函数中如何实例化内部类
2016-04-30 22:50 1201需要先new一个父类的对象,然后用父类对象.new 内 ... -
java synchronized 串行
2016-04-30 22:42 1189背景:大家都知道用synchronized来实现加锁 ... -
观察者 Listener是什么意思
2016-02-26 10:40 940从观察者设计模式来看,Listener翻译成中文就是 ... -
UTF-8和Unicode的关系
2016-02-25 16:34 978utf-8只实际了unicode的第一个plane ... -
dubbo
2016-02-18 15:48 7681、配置dubbo.xml,主要是连接到dubbo服务 ... -
datetime格式化
2016-02-18 11:25 837org.joda.DateTime格式化成特定的Str ... -
Java接口中的成员变量为什么必须是public static final?
2016-01-10 16:20 1375必须是final的,否则多个类全继承他后,每个人都改, ... -
抽象类能不能有构造函数
2016-01-10 16:06 1032可以有,但是不能用,即不能new。 refur ... -
workspace workset设置
2016-01-10 15:51 1226背景:当eclipse里面的项目太多时,看上去非常凌 ... -
eclipse一直building workspace
2015-12-10 19:37 804我这里的原因很特殊,是因为在配置spring d ... -
序列化和反序列化
2015-12-10 19:19 920说白了,序列化后 ... -
java.net.bindexception cannot assign requested address jvm_bind
2015-12-10 19:14 1395我的原因是hosts文件中关于127.0.0.1有2个 ...
相关推荐
Java 中 finally 语句块与 return 的执行关系 Java 中的 finally 语句块是用于保证无论出现什么情况,一定要执行的代码块。在 try-catch-finally 结构中,finally 语句块的执行顺序是非常重要的。下面我们来详细...
标题“try-finally-return-in-finally.rar_return”暗示了我们正在讨论`return`语句如何与`finally`块内的`return`交互。在JavaScript中,如果`try`块或`finally`块包含`return`语句,程序的行为可能会变得复杂。 ...
标题 "try-catch-finally-return-in-finally.rar_return" 提到了 `try-catch-finally` 结构与 `return` 语句的交互,这涉及到程序执行流程的关键方面。 `try` 块是用来包含可能会抛出异常的代码。如果在 `try` 块中...
3. 即使在`finally`块中也有`return`语句,`finally`块中的代码将被执行,然后返回值会被覆盖。这意味着`finally`块的`return`总是会覆盖`try`或`catch`块中的`return`。 现在让我们深入源码层面来进一步理解这个...
在Java编程语言中,`return` 语句和 `finally` 语句的相互作用是一个重要的概念,尤其是在处理异常处理时。`finally` 语句块通常用于确保某些代码无论是否发生异常都会被执行,而 `return` 语句用于提前结束方法并...
try、catch、finally、return 执行顺序详细讲解 try、catch、finally、return 执行顺序是 Java 编程语言中的一种 exception 处理机制,用于处理程序中的异常情况。下面我们来详细讲解 try、catch、finally、return ...
Java语言finally语句详解,finally到底是在return之前还是之后执行.zip
Java中finally和return的关系实例解析 Java中finally和return的关系实例解析是Java编程语言中一个重要的知识点。finally语句是Java语言中的一种特殊语句,它用于释放资源、关闭文件、关闭网络连接等操作。return...
Java finally语句到底是在return之前还是之后执行?Java finally执行深度剖析,具体看这篇博文:http://blog.csdn.net/lanxuezaipiao/article/details/16922895,这是里面相关的源码,欢迎大家下载使用。
在Java的异常机制中,如果finally中含有return语句,则try和catch中的return语句将会被JVM忽视
本文主要给大家介绍了在Python中return和finally共同存在的坑,以及填坑经验,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。 初识 return 相信每一个用过Python函数的童鞋, 肯定会用过return...
Condition 3: try中有异常,try-catch-finally里都没有return ,finally 之后有个returntry中有异常以后,根据
3. **finally中的return**:如果`finally`块中也包含了一个`return`语句,则该`return`语句会覆盖`try`块或`catch`块中的`return`语句。这意味着最终返回给调用者的值将是`finally`块中`return`语句指定的值。 综上...
从结果可以看到,finally 块中的 return 语句会覆盖 try 块中的 return 语句,try 块中的 return 语句就不能返回了。 finally 语句是在 try 的 return 语句执行之后,return 返回之前执行的。 finally 块中的 ...
1. **返回值**:如果 `finally` 块包含 `return` 语句,那么它将覆盖 `try` 或 `catch` 块中的任何 `return` 语句。这意味着最后的返回值是由 `finally` 块决定的。 2. **跳转语句**:即使使用了 `break`、`...
return x / y; } ``` 六、程序设计 本实验的程序设计主要包括两个部分:main方法和myDevide()方法。main方法用于调用myDevide()方法,并输出结果。myDevide()方法用于执行除法运算,并捕获和处理异常。程序的设计...
由于`finally`块的`return`语句位于`try`块的`return`之后,所以`finally`块的`return`会覆盖`try`块的`return`,导致最终返回的`s`值是"b"。 对于一个方法来说,`return`语句有两个主要功能:一是返回方法的计算...
第一:return语句并不是函数的终出口,如果有finally语句,这在return之后还会执行finally(return的值会暂存在栈里面,等待finally执行后再返回) 第二:finally里面不建议放return语句,根据需要,return语句...
即使在`try`或`catch`块中有return语句,`finally`块的代码也会被执行。 5. **多层嵌套** 你还可以在`try-catch-finally`结构内部嵌套另一个`try-catch-finally`结构,以处理更复杂的情况。这种方式使得异常处理...