Mah*_*ria 12 java finally try-finally
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; /* ;) */
}
}Run Code Online (Sandbox Code Playgroud)
为什么输出是CoolReturn,而不是null?
此致,
Mahendra Athneria
Jon*_*eet 14
表达式被计算为return语句中的值,这是将返回的值.finally块在return语句的表达式求值部分之后执行.
当然,finally块可以修改返回值引用的对象的内容 - 例如:
finally {
builder.append(" I get the last laugh!");
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,控制台输出将是"CoolReturn我笑到最后!" - 但它无法更改实际返回的值.