finally
finally一定会执行吗
不会
- 在执行try之前直接return
- 执行try之前程序报错
- try中执行System.exit(0);
执行时机
- finally块执行在try的return之前
- finally块执行在catch的return之前
finally的返回值
Java程序会把try或者catch块中的返回值保留,也就是暂时的确认了返回值,然后再去执行finally代码块中的语句。等到finally代码块执行完毕后,如果finally块中没有返回值的话,就把之前保留的返回值返回出去。
在finally块中进行return操作的话,则方法整体的返回值就是finally块中的return返回值。如果在finally块之后的方法内return,则return的值就是进行完上面的操作后的return值。