finally中是无论是否发生异常都会执行的语句,优先级甚至高于return语句,即无论try/catch中是否含有return语句,都一定会执行finally中的语句。
如果finally语句中有return语句,则执行finally中的return语句,否则,先执行finally中的语句,再执行try/catch中的return。
测试
try中包含return,finally中包含return:返回finally
try {
return "try";
}
catch (RuntimeException e) {
return "catch";
}
finally {
return "finally";
}
catch中包含return,finally中包含return:返回finally
try {
throw new RuntimeException();
}
catch (RuntimeException e) {
return "catch";
}
finally {
return "finally";
}
try中包含return,finally中不包含return:先打印finally, 后返回try
try {
return "try";
}
catch (RuntimeException e) {
return "catch";
}
finally {
System.out.println("finally");
}