在try-catch-finally的finally中return时,将不会执行try中的return,即finally中的代码是先于try中的return语句执行的,会造成覆盖。其他详细
int x;
try {
x=1;
return x;
}catch (ArithmeticException e){
x=2;
return x;
}finally {
x=3;
}
这段代码中,正常运行返回1,出现数学异常返回2,出现其他异常没用返回值。
在try中,返回值x=1被保存起来,然后去执行finally块,虽然finally改变了x的值,但返回值已经提前保存起来了,仍然返回1。