- 浏览: 138167 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
nishwd123:
受益匪浅,多谢楼主细心讲解.
Hibernate、Spring和Struts工作原理及使用理由 -
doublelcf:
写得真好。全面,流畅。清晰
Hibernate、Spring和Struts工作原理及使用理由
一.finally 中的语句什么时候会不执行
二.finally 中语句的执行顺序
package com.util.finallyTest; /** * finally 中的语句什么时候会不执行?? * @author chenxiaobing * */ public class Test { /** * 1.当在try之前代码便报错或在try之前便使用return 返回,则finally中的语句不会执行 * @return */ public static int test() { int i = 1; // if(i == 1) return 0; //若去掉改行的注释,则下面的语句均不会执行 System.out.println("the previous statement of try block"); i = i / 0; try { System.out.println("try block"); return i; } finally { System.out.println("finally block"); } } /** * 2.当在 try 语句块中执行了 System.exit (0) 语句,终止了 Java 虚拟机的运行,则finally中的语句不会执行 * @return */ public static int test1() { int i = 1; try { System.out.println("try block"); System.exit(0); return i; } finally { System.out.println("finally block"); } } /** * 3.当一个线程在执行 try 语句块或者 catch 语句块时被打断(interrupted)或者被终止(killed),与其相对应的 finally 语句块可能不会执行。 * 还有更极端的情况,就是在线程运行 try 语句块或者 catch 语句块时,突然死机或者断电,finally 语句块肯定不会执行了 * */ public static void main(String[] args) { //System.out.println("return value of test(): " + test()); System.out.println("return value of test(): " + test1()); } }
二.finally 中语句的执行顺序
package com.util.finallyTest; /** * * @author chenxiaobing * */ public class Test1 { /** * finally 语句块是在 try 或者 catch 中的 return 语句之前执行的 * 输出: * try block exception block finally block reture value of test() : 2 * @return */ public static int test() { int i = 1; try { System.out.println("try block"); i = 1 / 0; return 1; } catch (Exception e) { System.out.println("exception block"); return 2; } finally { System.out.println("finally block"); } } /** * finally 语句块是在 try 或者 catch 中的 return 语句之前执行的。 * 由此 finally 中的 return 1;语句要在 try 中的 return 0;语句之前执行 * @return 1 返回值为 1; */ public static int getValue() { try { return 0; } finally { return 1; } } /** * 关于 Java 虚拟机是如何编译 finally 语句块的问题,有兴趣的读者可以参考《 The JavaTM Virtual Machine Specification, Second Edition 》中 7.13 节 * Compiling finally。那里详细介绍了 Java 虚拟机是如何编译 finally 语句块。实际上,Java 虚拟机会把 finally 语句块作为 subroutine * (对于这个 subroutine 不知该如何翻译为好,干脆就不翻译了,免得产生歧义和误解。)直接插入到 try 语句块或者 catch 语句块的控制转移语句之前。 * 但是,还有另外一个不可忽视的因素,那就是在执行 subroutine(也就是 finally 语句块)之前,try 或者 catch 语句块会保留其返回值到本地变量表(Local Variable Table)中。 * 待 subroutine 执行完毕之后,再恢复保留的返回值到操作数栈中,然后通过 return 或者 throw 语句将其返回给该方法的调用者(invoker)。 * 请注意,前文中我们曾经提到过 return、throw 和 break、continue 的区别,对于这条规则(保留返回值), * 只适用于 return 和 throw 语句,不适用于 break 和 continue 语句,因为它们根本就没有返回值。 * @return 1 返回1 */ public static int getValue1() { int i = 1; try { return i; } finally { i++; } } /** * * @return 5 返回值为5 */ public static int getValue2() { int i = 1; try { i = 4; } finally { i++; return i; } } /** * * @return 5 返回值为5 */ public static int getValue3() { int i = 1; try { i = 4; } finally { i++; } return i; } public static void main(String[] args) { System.out.println("reture value of test() : " + test()); System.out.println("return value of getValue(): " + getValue()); } }
发表评论
-
Java中serialVersionUID
2012-11-26 13:27 840Java中serialVersionUID serialV ... -
ArrayList数组对象排序
2012-11-13 21:53 1409POJO package com.test.compara ... -
Java堆和栈的区别 equals 和 == 的区别
2012-11-07 12:10 797Java堆和栈的区别 equals ... -
Cookie,Session,Application用法及区别
2012-05-22 15:20 2802一.Cookie 首先,Cookie的作用域为 ... -
static 的用法
2012-05-22 13:58 879static 代码块应用 package com.ut ... -
java 断言 assert 初步使用:断言开启、断言使用
2012-05-04 20:43 1524java 断言 assert 初步使用:断言开启、断言使用 ... -
java 定时任务实现
2012-04-05 22:41 3652java.util.Timer定时器,实际上是个线程,定时调度 ... -
Servlet上传文件,commons-fileupload
2012-03-02 11:17 4794Servlet上传文件,commons-fil ... -
堆与栈的区别
2012-02-24 11:58 924堆和栈的区别 全局,静态,new产生的变量都在堆中动态分 ... -
在Java中用单例模式有什么好处
2012-01-30 19:46 1298Java Singleton模式主要作 ... -
JAVA单例模式的几种实现方法
2012-01-30 19:41 8711 饿汉式单例类.在类初始化时,已经自行实例化 clas ... -
jsp中的注释<!-- -->内容中不能包含--
2011-11-23 17:45 890jsp中的注释<!-- -->内容中不能包含-- ... -
ibatis和hibernate的区别
2011-08-15 13:34 624ibatis和hibernate的区别 ... -
equals和"=="浅析
2011-02-24 22:30 791==操作符专门用来比较 ... -
java中的重写与重载
2011-02-21 13:59 853方法的重写Overriding和重载Overloading是J ... -
MyEclipse生成WAR包并在Tomcat下部署发布
2011-02-18 22:56 2264右键选中项目,选择export。 然后选择J2EE-> ... -
JPA详解
2011-02-17 08:54 2000JPA全称Java Persistence API.JPA通过 ... -
comparable和comparator的区别
2011-02-16 17:59 1206两者区别: 1) Comparable接 ... -
Freemarker网站静态化实现
2011-02-15 14:26 1042转载自http://www.iteye.com/topic/4 ... -
jdk1.5之后新特性总结
2011-02-15 12:17 986前两天 面试的时候面试官突然问我jdk1.5之后的 ...
相关推荐
主要介绍了Java中finally和return的关系实例解析,总结了二者的关系,然后分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
主要介绍了java抛出异常与finally实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
主要深度介绍了Java编程中finally语句的执行原理,细致讲解了finally在异常处理中的流程控制作用,需要的朋友可以参考下
json串解析单元。简单易用,没有bug。 使用方法如下: var ResponseJson: string; Json, childJson: TlkJSONobject; begin Json := TlkJson.ParseText(ResponseJson) as TlkJsonObject; try Success := Trim...
java面试题解析困惑之final、finally和finalize的区别
本文主要通过实例解析来更好的了解js中try、catch、finally的执行规则,具有很好的参考价值,下面跟着小编一起来看下吧
这个代码实现了一个简单的XML文档操作。首先导入了所需的库,然后定义了一个名为SimpleXML的类,并在...在finally块中关闭了所有的资源。由于使用了DOM解析器来访问XML文档,因此可以方便地获取和修改XML文档中的数据。
} finally { if (reader != null) { try { reader.close(); } catch (IOException e) { e.printStackTrace(); } } if (connection != null) { connection.disconnect(); } } } }).start(); } ...
HtmlParse,解析给定url中的中文字符,输出到文本文件中: url:可配置多个 输出路径:可配置 package com.lhs; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import ...
新鲜出炉的 2016年上半年软件设计师上午真题及答案解析,不容错过!
目录 一、绪论 二、异常捕获 (Exception catching) 2.1 try-except 语句 2.1.1 基本用法 2.1.2 指定异常类型 2.1.3 小结 2.2 try-except-else 语句 ...不同于语法错法错误 (解析错误),调试 Python 程序时,即便语句
含基础篇,核心篇,框架篇,微服务篇 1.1.1 面向对象特征 封装,继承,多态和抽象 1、 封装 封装给对象提供了隐藏内部特性和行为的能力。对象提供一些能被其他对象访问...1.1.2 final, finally, finalize 的区别。。。
(20分) 本题三个答题点: a: 两种形式 dtd,schema b: 本质区别:schema本身是xml的,可以被XML解析器解析(这也是从DTD上发展schema的 根本目的) c: 两种主要方式:dom,sax.答出两种得全分,如能答出saxt,...
( F ) 37、一个异常处理中 finally语句块只能有一个或者可以没有。(F ) 38、语句import java.applet.Applet;最后的Applet是代表类(class)。( T ) 39、类体中private修饰的变量在本类中能访问,类生成的对象也能访问...
这篇文章主要介绍了Python语言异常处理测试过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 (一)异常处理 1.捕获所有异常 try: x = 5 / 0 except:...
这篇文章主要介绍了python 上下文管理器原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Python 提供了 with 语法用于简化资源操作的后续清除操作,是 ...
这篇文章主要介绍了python错误调试及单元文档测试过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 错误分为程序的错误和由用户错误的输入引起的错误,...
首先,Python 完整的异常处理语法结构如下: try: #业务实现代码 except Exception1 as e: ... 如果没有 try 块,则不能有后面的 except 块、else 块和 finally 块。但是也不能只使用 try 块,要
The concepts of digital signal processing are playing an increasingly important role in the...are discussed, and finally the ideas behind multistage implementations for increased efficiency are presented