public static void main(String[] args) {
System.out.println(new Test().test());
}
static int test(){
try {
System.out.println("6666666");
return 1;
} catch (Exception e) {
// TODO: handle exception
}finally{
return 2;
}
输出:6666666
2
结论:try中的语句调用先于finally中的语句执行,也就是说return 1先执行,
再执行return 2,所以最终返回输出2。return并不是让函数马上返回,而是return
语句执行之后,将把返回结果放置进函数栈中,函数并不是马上返回,它要在执行
finally语句之后才真正返回。
简言之:finally中的代码比return,break语句后执行!
System.out.println(new Test().test());
}
static int test(){
try {
System.out.println("6666666");
return 1;
} catch (Exception e) {
// TODO: handle exception
}finally{
return 2;
}
输出:6666666
2
结论:try中的语句调用先于finally中的语句执行,也就是说return 1先执行,
再执行return 2,所以最终返回输出2。return并不是让函数马上返回,而是return
语句执行之后,将把返回结果放置进函数栈中,函数并不是马上返回,它要在执行
finally语句之后才真正返回。
简言之:finally中的代码比return,break语句后执行!