try finally return
程序员文章站
2022-04-06 16:41:01
...
class Entry
{
public Entry(String value){
this.value = value;
System.out.println("[Entry]setValue:"+value);
}
private String value = "";
public String getValue()
{
System.out.println("[Entry]getValue"+value);
return value;
}
public Entry setValue(String value)
{
this.value = value;
System.out.println("[Entry]setValue:"+value);
return this;
}
}
private static Entry testTryFinally()
{
Entry e = new Entry("0");
try{
return e.setValue("2");
}finally{
e.setValue("1");
}
}
public static void main(String[] args) throws IOException
{
testTryFinally();
}
输出结果:
[Entry]setValue:0
[Entry]setValue:2
[Entry]setValue:1
结论:
先执行Entry e = new Entry("0");
再执行e.setValue("2");然后把这一步的值赋给return,这个时候进入finally
再执行e.setValue("1");
在执行finally之前e.setValue("2");就已经执行了,然后把结果暂存在return里面.
执行完finally后才返回return.
r.lock();
try{
return Entry.setValue("X");
}finally{
r.unlock();
}
这段代码是线程安全的,因为先执行了Entry.setValue("X");才解锁的.
推荐阅读
-
C#中的try catch finally用法分析
-
C#中的try catch finally用法分析
-
Android源码中final关键字的用法及final,finally,finalize的区别
-
Python中return语句用法实例分析
-
去掉Myeclipse对JS等文件的验证(Cannot return from outside a function or method)
-
在SQL Server的try...catch语句中获取错误消息代码的的语句
-
PHP Try-catch 语句使用技巧
-
java中final与finally的使用介绍
-
JS中实现函数return多个返回值的实例
-
Java中finally和return的关系实例解析