Java关键字finally

参考文章:关于Java中finally语句块的深度辨析 

仅考虑程序正常执行的情况下,不考虑System.exit(0)等情况。不过关于“finally 语句块一定会执行吗?”这个问题确实会有一定的说法。

1,无控制转移语句,在return之前执行

(1)
try {System.out.println("try...");return;
} catch (Exception e) {System.out.println("catch...");  
} finally {System.out.println("finally...");
}
output:会在try代码块return之前执行
try...
finally...
(2)
try {System.out.println("try...");throw new Exception(" ");
} catch (Exception e) {System.out.println("catch...");return;
} finally {System.out.println("finally...");
}
output:会在catch代码块return之前执行
try...
catch...
finally...

 2,finally中有return 

(1)
public class Demo{public static void main(String[] args) {System.out.println("result = " + test(10));}public static int test(int i) {try {System.out.println("try...");return i-1;} catch (Exception e) {System.out.println("catch...");return i-2;} finally {System.out.println("finally...");return i-4;}}
}
output:return的是6,finally中的结果
try...
finally...
result = 6
(2)
public class Demo{public static void main(String[] args) {System.out.println("result = " + test(10));}public static int test(int i) {try {System.out.println("try...");throw new Exception();} catch (Exception e) {System.out.println("catch...");return i-2;} finally {System.out.println("finally...");return i-4;}}
}
output:return的是6,finally中的结果
try...
catch...
finally...
result = 6
(3)finally中有无return,但是有运算
import java.util.HashMap;
import java.util.Map;public class Demo{public static void main(String[] args) {System.out.println("result = " + test(10));}public static int test(int i) {Map<String, Object> map = new HashMap<String, Object>();map.put("Demo", "Demo");        try {System.out.println("try...");return i-1;} catch (Exception e) {System.out.println("catch...");return i-2;} finally {System.out.println("finally...");i = i-4;}}
}
output:return的是9,而不是10-4-1=5
try...
finally...
result = 9
(4)在finally中return
import java.util.HashMap;
import java.util.Map;public class Demo{public static void main(String[] args) {System.out.println("result = " + test(10));}public static int test(int i) {try {System.out.println("try...");return i-1;} catch (Exception e) {System.out.println("catch...");return i-2;} finally {System.out.println("finally...");return i-4;}}
}
output:与(1)(2)类似,直接return了
try...
finally...
result = 6
(5)在代码块外面return
public class Demo{public static void main(String[] args) {System.out.println("result = " + test(10));}public static int test(int i) {try {System.out.println("try...");i--;} catch (Exception e) {System.out.println("catch...");return i-2;} finally {System.out.println("finally...");i = i - 4;}return i;}
}
output:
try...
finally...
result = 5

 

转载于:https://www.cnblogs.com/lemon-now/p/5148131.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/574063.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

单表置换密码java代码实现_单表替换密码

要求&#xff1a;实现单表替换密码&#xff0c;用键盘接收明文和密钥&#xff0c;屏幕答应替换表和密文&#xff0c;大小写敏感&#xff0c;输入健壮性。实际问题&#xff1a;密钥处理应该是这个程序的重点&#xff0c;加密和解密都没有什么要注意的地方。用key[]数组接收keyte…

hdu-5082

题意非常easy&#xff0c;就是给出父母的名字&#xff0c;然后依据父母的名字来给孩纸取名字&#xff01; 能够将此题简化为&#xff1a; 孩纸的名字父亲的frist name字符串&#xff08;_small_&#xff09;母亲额frist name; 然后将孩纸的名字输出就可以&#xff01;代码例如以…

java面试compareble_Java(面试必备):30 个 Java 集合面试问题和答案

30 个 Java 集合面试问题和答案前言今天博主将为大家分享一下Java(面试必备)&#xff1a;30 个 Java 集合面试问题和答案&#xff0c;不喜勿喷&#xff0c;如有异议欢迎讨论&#xff01;Java集合框架为Java编程语言的基础&#xff0c;也是Java面试中很重要的一个知识点。这里&a…

有关java的名句_关于志气的名言名句(精选50句)

1、路漫漫其修远兮&#xff0c;吾将上下而求索。——屈原《离骚》2、会当凌绝顶&#xff0c;一览众山小。——杜甫《望岳》3、志当存高远。——诸葛亮《诫外生书》4、精诚所加&#xff0c;金石为开。——《后汉书光武十王列传》5、天行健&#xff0c;君子以自强不息。——《周易…

java 折线图 放大 缩小_可拖拉放大缩小HC折线图 | JShare

可拖拉放大缩小HC折线图 | JSharevar chart Highcharts.chart(container, {chart: {zoomType: x},title: {text: Hide overlapping data labels},series: [{data: (function (arr, len) {var i;for (i 0; i < len; i i 1) {arr.push(i);}return arr;}([], 50)),dataLabe…

php二进制加密_怎样给PHP源代码加密?PHP二进制加密与解密的解决办法

分享2种PHP的源码加密方式&#xff0c;此加密方法支持任意PHP版。注意&#xff0c;加密后的PHP代码无需第三方工具解密&#xff0c;像往常一样&#xff0c;直接运行即可。function encode_file_contents($filename) {$typestrtolower(substr(strrchr($filename,.),1));if (php …

Hibernate所用15个jar包

Hbernate3.jar-------------------核心包antlr.jar----------------------------语言转换工具&#xff0c;hibernate用他将hql语句转换为sql语句dom4j.jar--------------------------解析xml文档的工具ehcahe.jar-------------------------缓存工具&#xff0c;如没提供其它缓存…

php中常用的运算符和表达式有哪几种,php 运算符与表达式详细介绍

php 运算符与表达式一、运算符的分类1、按操作数分类1.!true // 一元运算符2.$a$b // 二元运算符3.true ? 1:0 // 三元运算符2、按操功能分类(1)算术运算符1.、-、x、/、%(取余)(2)字符串运算符1.. // 例如&#xff1a;$a abc.efg;(3)赋值运算符1. // 简单赋值2.、-、X、/、…

ogrinfo使用

简介 orginfo是OGR模块中提供的一个重要工具&#xff0c;用于读取地图文件中记录&#xff0c;可以指定筛选条件&#xff08;按字段、sql、矩形范围&#xff09;使用方式 命令行参数 Usage: ogrinfo [--help-general] [-ro] [-q] [-where restricted_where][-spat xmin ymin xma…

php7与apache整合,apache集成php7.3.5的详细步骤

安装 php首先安装 php 的压缩包&#xff0c;目前下载地址解压文件到这个路径下&#xff1a;D:Program Filesphp-7.3.5(自行选择合适的路径).然后将这个路径加入到环境变量 path 中。然后打开 cmd 运行php -version,输出类似如下&#xff0c;说明安装成功。PHP 7.3.5 (cli) (bui…

php正则去除base64,使用PHP preg_match_all的正则表达式base64块

我正在尝试使用php中的正则表达式来匹配base64编码的块。 它以Content-Transfer-Encoding: base64开头&#xff0c;因此我希望可以在此之后匹配内容&#xff0c;但是下面的正则表达式无法正常工作。 请帮助我修复此正则表达式以匹配base64块。 在电子邮件正文中&#xff0c;bas…

真机iOS SDK升级后xcode不能进行真机调试 怎么办

今天升级了一下iPod的SDK到iOS8&#xff0c;xcode仅仅能支持到7.1&#xff0c;真机调试遇到问题&#xff1f;&#xff1f;&#xff1f;以下是解决的方法&#xff01;找到xcode&#xff0c;点击右键。打开显示包内容&#xff0c;按路径Contents/Develpoer/Platforms/iPoneOS.pla…

php 中断输出,PHP捕捉异常中断的方法

前言任何程序员在开发时都可能遇到过一些失误&#xff0c;或其他原因造成错误的发生。当然&#xff0c;用户如果不愿意或不遵循应用程序的约束&#xff0c;也会在使用时引起一些错误发生。本文主要介绍在php中用 register_shutdown_function进行异常处理的方法&#xff0c;有需…

JAVA的BIT数组

写个小东西&#xff0c;要去重复数字&#xff0c;用到BIT数组&#xff0c;虽然JAVA已经提供了一个BitSet&#xff0c;不过自己手痒&#xff0c;又写了一个简单的 原理就不写了&#xff0c;网上一大堆 1 import java.util.Iterator;2 import java.util.function.BiConsumer;3 4 …

php环境苹果搭建,mac下搭建php环境

本文主要和大家分享mac下搭建php环境&#xff0c;最近工作环境切换到Mac&#xff0c;所以以OS X Yosemite(10.10.1)为例&#xff0c;记录一下从零开始安装Mac下LNMP环境的过程确保系统已经安装xcode&#xff0c;然后使用一行命令安装依赖管理工具Homebrew。ruby -e "$(cur…

php后门 佛像,35张活的再久,也未必见过的照片,图2是佛像通过CT扫描后内部照...

今天这组照片可能很多人都是一次见到&#xff0c;包括小编本人看了也十分惊讶。最大的感触是&#xff0c;很多的商品居然是这么做出来的&#xff0c;看完了才有一种豁然开朗的感觉&#xff0c;废话不多说一起看看吧。鸡蛋里面套鸡蛋1000年前佛像&#xff0c;经过CT扫描后&#…

oracle层次化查询

一般我们在处理层次关系的数据时&#xff0c;在建ER关系模型&#xff0c;我们都会产生自关联的数据结构。如&#xff1a;emp员工表中empno和managerno就是&#xff0c;这样就产生了层次化的结构。 那么如何快速的查询一个已知的根节点&#xff0c;查找到相应的一系列子节点呢&a…

民生付 php,“民生付”升级我省电商支付体验

■周昆 俞正林我省电子商务的发展正在得到更多的金融支持&#xff0c;未开通网银的消费者也能方便地进行网上支付了。记者近日从民生银行福州分行了解到&#xff0c;该行全网线上收单产品“民生付”已经得到我省电子商务企业的青睐。通过该服务&#xff0c;我省电子商务商户只需…

droidbox官网

droidbox官网&#xff0c;droidbox已经移植到github上了 https://github.com/pjlantz/droidbox 转载于:https://www.cnblogs.com/nightnine/p/5169261.html

java实现缓存中间件,Redis,分布式系统中不可少的缓存中间件

1.为什么要用缓存内存在整个计算机系统来说也就是一个缓存&#xff0c;CPU操作内存速度很快&#xff1b;因为操作数据的时候&#xff0c;先从硬盘中取出数据放到内存中&#xff0c;然后CPU操作数据缓存&#xff1a;提升访问效率&#xff0c;将一些频繁访问地放在缓存里面image.…