异常处理finally关键字【Java基础学习笔记三】
异常处理 try-catch-finally 中,不管在try、catch中发生什么,都会进到 finally 里面
一、finally执行流程
1、先在 try、catch 中计算返回值,并将返回值存储起来,等待返回
(注意:返回值是在finally运行之前就已经确定,并且缓存,不管 finally 对该值(基本数据类型)做任何改变,返回值都不会改变)
2、执行 finally 代码块
3、将之前存储的返回值,返回回去
二、基本数据类型和引用数据类型
虽然返回值在 finally 运行之前就已经确定,但引用数据类型在 finally 中却是可以改变的
基本数据类型: finally修改的是值
引用数据类型: finally修改的是内存中的值
三、finally不执行的情况
1、断电等不可抗力因素
2、人为主动退出:System.exit(0);