finally与return
2024-10-19 03:53:09
finally关键字:和try块使用,一般做资源释放操作,比如关闭流、关闭数据库连接,释放锁。
return:用于返回值。
finally块可保证一定执行,当逻辑处理有返回值时,会首先执行finally再执行return返回值。看这个规律我们可以推断如下代码的执行顺序为:
test1
finally
public static int test1(){
int i = 0;
try{
System.out.println("test1"); //
return i;
}finally {
System.out.println("finally"); //
}
}
再看如下代码执行顺序是怎样的
public static int test1(){
int i = 0;
try{
System.out.println("test1"); //
}finally {
System.out.println("finally"); //
}
System.out.println("finally behind"); //
return i;
}
经过测试结果为 test1、 finally、 finally behind .
在测试该段代码之前根据我之前了解的判断执行顺序应该是132,这是错误的。所以我们需要注意这种写法的执行顺序。正确的结果是123。这一点在使用同步代码的时候一定要注意 。主要在finally中使用lock.unlock方法时,return要写在try中,避免return前已经释放锁,将数据暴露给了其它任务。
最新文章
- November 2nd Week 45th Wednesday 2016
- 前端构建:Less入了个门
- UVA11624Fire!(BFS)
- uva 11636
- Android-Activity使用(2)
- 使用AChartEngine第一步:在项目中配置AChartEngine环境
- MyEclipse+Android 安装配置
- C#控制台->;>;四则运算
- 网络编码 GB2312、GBK与UTF-8的区别
- VC6.0编译boost
- (贪心5.2.1)UVA 10026 Shoemaker's Problem(利用数据有序化来进行贪心选择)
- HDU_2014 青年歌手大奖赛_评委会打分
- 数据库系统——B+树索引
- AsyncTask实现下载图片
- JavaEE开发之Spring中的事件发送与监听以及使用@Profile进行环境切换
- 如何给远程主机开启mysql远程登录权限
- MVCC的一些理解
- 几大时尚前端UI框架的IE支持
- sql语句的优先级
- MySQL:事务的隔离性