稍作搜索后,看到生成了什么字节码,我发现实际上似乎没有finally块,并且JVM也没有生成跳转或goto语句。
上面的代码翻译为 (如果我正确解释字节码,如果我错了,请更正我)
public static int TestTryFinallyBlock() { int returnValue; //A temporary return variable try { int i = 0; i = 10; returnValue = i; i = 40; return returnValue; } catch (RuntimeException e) { i = 40; //finally section pre id copied here too throw e; }}
注意: 如果
'i'是对可变类对象的引用,并且对象的内容在finally块中更改,则这些更改也将反映在返回的值中。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)