【发布时间】:2011-03-29 18:48:00
【问题描述】:
发现这个问题here
我不明白,为什么在第一种情况下打印CoolReturn+1 而在第二种情况下打印CoolReturn?它是如何工作的?
谢谢
=====================
将打印什么?
public void testFinally(){
System.out.println(setOne().toString());
}
protected StringBuilder setOne(){
StringBuilder builder=new StringBuilder();
try{
builder.append("Cool");
return builder.append("Return");
}finally{
builder.append("+1");
}
}
答案:CoolReturn+1
有点难:
public void testFinally(){
System.out.println(setOne().toString());
}
protected StringBuilder setOne(){
StringBuilder builder=new StringBuilder();
try{
builder.append("Cool");
return builder.append("Return");
}finally{
builder=null; /* ;) */
}
}
答案:CoolReturn
【问题讨论】:
-
查看每个
finally块的内容。 -
@noob 我认为他的目标是确定行为为何如此。