结论:
1、在任何情况下,finally块中代码都会执行,包括try和catch中有return的情况;
2、finally中最好不要包含return,否则返回值都为finally中return的返回值,没有意义。
3.在finally中没有return的情况下:finally是在return后面的表达式运算之后执行的,此时并没有返回运算之后的值,而是把值保存起来,不管finally对该值做任何的改变,返回的值都不会改变,依然返回保存起来的值。也就是说方法的返回值是在finally运算之前就确定了的,但对于集合类型的如map,list除外。
1.try{}catch{}finally{} return;有无异常情况下都会执行return后面的表达式;
2.try{return;}catch{}finally{} return;无异常情况下finally后面的return不会执行,执行的为try中的return,反之有异常的情况下执行的为finally后面的return,try中的return不会执行;
3.try{} catch{return;} finally{} return;无异常情况下fianlly后面的return会执行,catch中的return不会执行,反之,有异常的情况下执行的为catch中的return,finally后面的return不会执行。
4..try{return;} catch{return;} finally{} return;finally后面的return不会执行,有无异常分别执行的为catch和try中的return;