Java中的try,catch,finally中的return的返回值问题
最近在搞面试题的时候遇到一个问题。
在try,catch,finally中有return的问题。
可以分为几种情况:
1.仅try中有return
返回值为1,finally中的i++不会影响到try的return值,并且会在return之前执行。
2.try和finally中都有return
finally中的return会覆盖try中的ruturn,返回值为2。try中的return会失效。
3.try和catch中都有return
得到的结果值为2,try中的return以及finally中的i++操作都是失效的。
4.try,catch,finally中都有return
返回值3,try和catch中的return失效了,只有finally中的return成功执行,并覆盖上述的return。
5.finally中抛出异常,且都有return
抛出异常ArithmeticException / by zero 无返回值。
6.简单总结一下:
做一些简单的文字总结,并不从源码的角度分析:
1.try,catch,finally语句块中均有return,三个语句块中都没有抛出异常:将执行finally语句块中的return。
2.try,catch,finally语句块中均有return,try语句块中抛出异常且catch捕捉到异常:将执行finally语句块的return。
3.try,catch语句块中均有return,finally语句块中无return,finally中的操作不会影响return的结果。
4.try,catch,finally语句块中均有return,try和catch语句块没有抛出异常,finally语句块中抛出异常:将抛出finally语句块中的异常。