在finally中写return语句最终会造成吞掉异常的后果
从JVM指令层面来看
可以看到 如果从 0 到 9 (不包含9) 出现了任何异常都会跳转到 8的位置
而接下来所做的,仅仅只把异常对象存储到了局部变量表中的0号位置,接着把30放入栈顶就返回了
期间丢失了 athrow指令,所以不会有任何异常堆栈的显示,所以在开发中最好不要在finally 中写return语句,否则会吞噬异常
在finally中写return语句最终会造成吞掉异常的后果
从JVM指令层面来看
可以看到 如果从 0 到 9 (不包含9) 出现了任何异常都会跳转到 8的位置
而接下来所做的,仅仅只把异常对象存储到了局部变量表中的0号位置,接着把30放入栈顶就返回了
期间丢失了 athrow指令,所以不会有任何异常堆栈的显示,所以在开发中最好不要在finally 中写return语句,否则会吞噬异常