- 浏览: 140968 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
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 866Java中serialVersionUID serialV ... -
ArrayList数组对象排序
2012-11-13 21:53 1448POJO package com.test.compara ... -
Java堆和栈的区别 equals 和 == 的区别
2012-11-07 12:10 828Java堆和栈的区别 equals ... -
Cookie,Session,Application用法及区别
2012-05-22 15:20 2842一.Cookie 首先,Cookie的作用域为 ... -
static 的用法
2012-05-22 13:58 912static 代码块应用 package com.ut ... -
java 断言 assert 初步使用:断言开启、断言使用
2012-05-04 20:43 1556java 断言 assert 初步使用:断言开启、断言使用 ... -
java 定时任务实现
2012-04-05 22:41 3691java.util.Timer定时器,实际上是个线程,定时调度 ... -
Servlet上传文件,commons-fileupload
2012-03-02 11:17 4839Servlet上传文件,commons-fil ... -
堆与栈的区别
2012-02-24 11:58 960堆和栈的区别 全局,静态,new产生的变量都在堆中动态分 ... -
在Java中用单例模式有什么好处
2012-01-30 19:46 1340Java Singleton模式主要作 ... -
JAVA单例模式的几种实现方法
2012-01-30 19:41 9021 饿汉式单例类.在类初始化时,已经自行实例化 clas ... -
jsp中的注释<!-- -->内容中不能包含--
2011-11-23 17:45 920jsp中的注释<!-- -->内容中不能包含-- ... -
ibatis和hibernate的区别
2011-08-15 13:34 649ibatis和hibernate的区别 ... -
equals和"=="浅析
2011-02-24 22:30 821==操作符专门用来比较 ... -
java中的重写与重载
2011-02-21 13:59 899方法的重写Overriding和重载Overloading是J ... -
MyEclipse生成WAR包并在Tomcat下部署发布
2011-02-18 22:56 2286右键选中项目,选择export。 然后选择J2EE-> ... -
JPA详解
2011-02-17 08:54 2036JPA全称Java Persistence API.JPA通过 ... -
comparable和comparator的区别
2011-02-16 17:59 1231两者区别: 1) Comparable接 ... -
Freemarker网站静态化实现
2011-02-15 14:26 1072转载自http://www.iteye.com/topic/4 ... -
jdk1.5之后新特性总结
2011-02-15 12:17 1021前两天 面试的时候面试官突然问我jdk1.5之后的 ...
相关推荐
} finally { return addr; } } } ``` #### 四、注意事项 1. **API限制**:需要注意的是,Google地图API对每个IP地址每天的地址解析请求次数有限制,如果在24小时内收到来自一个IP地址超过15,000个地址解析请求...
Java中finally和return的关系实例解析 Java中finally和return的关系实例解析是Java编程语言中一个重要的知识点。finally语句是Java语言中的一种特殊语句,它用于释放资源、关闭文件、关闭网络连接等操作。return...
} finally { workbook.dispose(); // 关闭流并释放资源 } ``` 在实际应用中,根据硬件配置和数据处理需求,可能需要调整上述策略,以达到最佳性能。在测试环境中,对于1048576行的Excel文件,219秒的解析时间已经...
### Java异常处理的四大金刚:try、catch、finally和throw的深度解析 #### Java异常处理概述 异常处理机制是程序设计中的一个重要组成部分,它能够帮助程序员有效地管理程序运行过程中可能出现的各种错误情况。...
} finally { try { zipis.close(); } catch (IOException e) { e.printStackTrace(); } } return 0; } private void parseFile(CustomInputStream is, StringBuffer text) throws IOException { // 使用is...
Java的异常处理机制(try-catch-finally语句)可以确保程序在出现错误时能够优雅地恢复,避免程序崩溃。 6. **测试与调试**:为了确保解析的准确性,开发者需要编写测试用例,使用JUnit或其他测试框架对解析功能...
对于错误处理,Java的异常处理机制(try-catch-finally)是基础,可以捕获并处理各种可能的异常。日志记录是系统监控的重要部分,可以使用log4j、SLF4J或Java内置的`java.util.logging`框架。通过设置不同级别的日志...
} finally { if (br != null) { try { br.close(); } catch (IOException e) { e.printStackTrace(); } } } ``` 5. **访问配置**:`ConfigFile.java`可能提供了一些方法,允许其他类访问解析后的配置数据,如...
#### 四、示例解析 假设有一个简单的示例,其中使用了终止处理程序来避免内存泄漏: ```cpp char *p = NULL; __try { p = new char[256]; return; } __finally { delete[] p; p = NULL; } ``` 在这个例子中,...
在Java编程中,`finally`语句块是一个关键的组成部分,尤其在异常处理中起到至关重要的作用。然而,关于`finally`的执行原理,并非所有程序员都对其有深入的理解。`finally`的主要功能是在程序执行过程中确保某些...
在开发过程中,掌握DNS解析机制对于跨平台应用,如在Windows、Android和iOS上的应用尤其关键。Delphi XE8是一款强大的集成开发环境(IDE),支持多种平台的应用程序开发,包括桌面系统和移动设备。 首先,理解DNS...
在Delphi XE7中,解析JSON(JavaScript Object Notation)数据是一项常见的任务,尤其是在与Web服务、API接口交互时。JSON作为一种轻量级的数据交换格式,因其易于阅读和编写,同时也易于机器解析和生成,因此被广泛...
例如,以下代码展示了如何用Jsoup解析一个网页并获取标题: ```java Document doc = Jsoup.connect("http://example.com").get(); Element title = doc.select("title").first(); System.out.println(title.text())...
Java 异常处理机制与 Finally 块的使用详解 Java 异常处理机制是 Java 语言中的一种错误处理机制,用于处理程序执行过程中的意外情况,例如网络连接失败、文件不存在、算术溢出等。Java 异常处理机制通过 try-catch...
异常处理是JAVA中的一个重要概念,习题解析详细介绍了try-catch-finally语句块的使用,以及如何自定义异常。通过解决习题,读者可以学会如何正确地捕获和处理程序运行时可能出现的错误,以确保程序的健壮性。 JAVA...
2. **异常处理**:学习如何使用try-catch-finally结构进行错误处理,以及自定义异常类,提高程序的健壮性。 3. **事件和委托**:C#中的事件和委托是实现组件通信的重要机制,案例可能涉及GUI应用中的按钮点击事件,...
json串解析单元。简单易用,没有bug。 使用方法如下: var ResponseJson: string; Json, childJson: TlkJSONobject; begin Json := TlkJson.ParseText(ResponseJson) as TlkJsonObject; try Success := Trim...
} finally { if (inputStream != null) { try { inputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } ``` `readStreamToString()`是辅助方法,用于将输入流转换为字符串,具体...
* try-catch-finally 是捕捉异常的基本结构。 4.3 多线程 * 线程是程序执行的基本单位,可以实现高效的并发处理。 * 线程有五种基本状态:新建、运行、阻塞、等待、死亡。 4.4 文件与 I/O 流 * Java 中的 I/O 流...
finally XMLDoc.Free; end; end; ``` 一旦XML文档被加载,我们可以访问其根节点,并通过节点路径、属性名或索引来遍历和操作文档。例如,要获取某个元素的子节点或属性值,可以这样做: ```delphi var Node: ...