public class foo {
static String test(){
try{
return "try";
}finally{
return "finally";
}
}
public static void main(String[] args){
System.out.println(test());
}
}
这段代码的输出结果是finally
我以前只是认为try、catch、finally这个结构,finally一定会在try或者catch后边被执行。没有想到即使是return了居然还能够被执行到。这里打上断点试验后发现,try中的return "try"是被执行到了的,但是并没有真的返回。紧接着就跳到了finally中去执行了,然后返回了finally字符串。也就是说,finally中的返回结果覆盖了try中的返回结果。
对此网上说finally是无论如何都会被执行的。我自己尝试了下,假如System.exit(0)的话,还是可以不执行finally直接把进程干掉的。
这个结构的应用的话http://blog.sina.com.cn/s/blog_639dde240100rjjw.html这篇博客有些介绍。