尝试{} finally {}用返回值构造
这个问题在这里已经有了答案:
一切都按预期工作,这里没有错误。 当你有疑问时,JLS是你的救星:
JLS - 14.20.2。 try-finally和try-catch-finally的执行 :
如果try
块的执行由于任何其他原因R而突然完成,则执行finally
块,然后有一个选择:
如果finally块正常完成,那么try语句
由于原因R突然完成
如果由于S原因,finally块突然完成,那么try语句因S原因突然完成(并且原因R是
丢弃)。
它覆盖try
块中的值。
finally
return
丢弃try
子句中可以抛出的所有异常。