根据代码分析是没有异常,所以不会执行catch代码块中的内容try语句块中的内容执行以后,肯定要执行finally语句块,只有在一种情况下不执行,finally语句块中的内容,就是强行停止程序,执行完finally语句块中的内容以后,才会return,也就是说finally中的内容,是在return之前执行的那么为什么还是会返回2 ,原因是在finally中无法改变返回值。
然后你又在finally中添加一个return,因为finally中的内容是这些在try的return之前,所以在finally的时候,值就已经返回了,所以最后输出的是3。
|