finally是用于try-catch语句中,用于关闭资源,所以不论是否抛出异常都会执行finally语句块中的代码。而且即使try语句块中或者catch语句块中执行了return,最后还是会调用finally的语句块。
接下来我们来试验一下:
代码:
public class TestFinally {
public static void main(String[] args) {
System.out.println(test(null)+","+test("2")+","+test(""));
}
public static int test(String s){
try{
String[] ss = s.split(",");
return 1;
}catch (NullPointerException e){
return 2;
}catch (Exception e){
return 3;
}finally {
return 4;
}
}
}
最后执行结果为:4,4,4
验证了上面的说法。