异常处理finally关键字【Java基础学习笔记三】

异常处理 try-catch-finally 中,不管在try、catch中发生什么,都会进到 finally 里面

 

一、finally执行流程

1、先在 try、catch 中计算返回值,并将返回值存储起来,等待返回

(注意:返回值是在finally运行之前就已经确定,并且缓存,不管 finally 对该值(基本数据类型)做任何改变,返回值都不会改变)

2、执行 finally 代码块

3、将之前存储的返回值,返回回去

 

二、基本数据类型和引用数据类型

虽然返回值在 finally 运行之前就已经确定,但引用数据类型在 finally 中却是可以改变的

基本数据类型:  finally修改的是值 

异常处理finally关键字【Java基础学习笔记三】

引用数据类型:  finally修改的是内存中的值

异常处理finally关键字【Java基础学习笔记三】

 

三、finally不执行的情况

1、断电等不可抗力因素

2、人为主动退出:System.exit(0);

异常处理finally关键字【Java基础学习笔记三】