Java中的try+catch+finally+return的返回值问题

由于class字节码文件不好理解的问题,这里只做一个简单的文字总结,主要可以分为9种情况:

(1)try,catch,finally语句块中均有return,三个语句块中都没有抛出异常:将执行finally语句块中的return。

(2)try,catch语句块中均有return,finally语句块中无return,三个语句块中都没有抛出异常:将执行try语句块的return。

(3)try,catch语句块中均有return,finally语句块中无return,try语句块中抛出异常且catch捕捉到异常:将执行catch语句块的return。

(4)try,catch,finally语句块中均有return,try语句块中抛出异常且catch捕捉到异常:将执行finally语句块的return。

(5)try,catch语句块中均有return,finally语句块中无return,try语句块中抛出异常且catch捕捉到异常,catch语句块又抛出了异常:将抛出catch语句块中的抛出的异常。

(6)try,catch,finally语句块中均有return,try语句块中抛出异常且catch捕捉到异常,catch语句块又抛出了异常:将执行finally语句块中的return。

(7)try,catch语句块中均有return,finally语句块中无return,try语句块中抛出异常与catch要捕捉的异常类型不一致:将抛出try语句块中的异常。

(8)try,catch,finally语句块中均有return,try语句块中抛出异常与catch要捕捉的异常类型不一致:将执行finally语句块中的return。

(9)try,catch,finally语句块中均有return,try和catch语句块没有抛出异常,finally语句块中抛出异常:将抛出finally语句块中的异常。

猜你喜欢

转载自blog.csdn.net/new1111111/article/details/79652424