关于try-catch-finally需要注意的地方

首先是try-catch-finally的完整版
 
1、try里有异常,catch抓住异常,finally执行。

2、try里无异常,finally执行。

3、try中有异常,catch中return,finally执行。

4、try中有异常,catch中return,finally尝试改变catch中返回的变量,结果发现无法改变。

原理:finally语句有一个执行细节,如果在try或者catch语句内有return语句,则return语句在finally语句执行结束后才执行,但finally并不能改变返回值。执行过程是,在执行到catch内的 return i; 语句前,会先将返回值 i 保存在一个临时变量中,然后才执行finally语句,最后catch再返回那个临时变量,finally中对 i 的修改不会被返回。

 

5、try中有异常,catch中有return,finally中有return。

扫描二维码关注公众号,回复: 50277 查看本文章

6、finally中抛出异常会覆盖之前的异常。

7、可以使用finally返回正常值,是catch中的异常不会抛出。

catch语句不是必须的。没有catch语句的运行结果也和前面7种情况类似。

8、try中return不抛出异常,finally执行。

9、try中return抛出异常,finally执行。

10、finally尝试改变try中返回的变量,发现无法改变。原理与之前4中说的相同。

11、使用finally覆盖try中抛出的异常。

12、可以使用finally返回正常值,使try中异常不会抛出。

猜你喜欢

转载自www.cnblogs.com/littlechicken/p/8920578.html
今日推荐