java中异常的处理方式,深入剖析Java中的各种异常处理方式

1. 调试追踪代码:

?

2. 抛出Exception,没有finally,当catch遇上return

?

后台输出结果:

?

3. 抛出Exception,当catch体里有return,finally体的代码块将在catch执行return之前被执行

?

后台输出结果:

?

4. 不抛出Exception,当finally代码块里面遇上return,finally执行完后将结束整个方法

?

后台输出结果:

?

5. 不抛Exception,当finally代码块里面遇上System.exit()方法将结束和终止整个程序,而不只是方法

?

后台输出结果:

?

6. 抛出Exception,当catch和finally同时遇上return,catch的return返回值将不会被返回,finally的return语句将结束整个方法并返回

?

后台输出结果:

?

7. 不抛出Exception,当finally遇上return,try的return返回值将不会被返回,finally的return语句将结束整个方法并返回

?

后台输出结果:

?

结论

Java的异常处理中,程序执行完try里面的代码块之后,该方法并不会立即结束,而是继续试图去寻找该方法有没有finally的代码块

如果没有finally代码块,整个方法在执行完try代码块后返回相应的值来结束整个方法

如果有finally代码块,此时程序执行到try代码块里的return一句之时并不会立即执行return,而是先去执行finally代码块里的代码

若finally代码块里没有return或没有能够终止程序的代码,程序在执行完finally代码块代码之后再返回try代码块执行return语句来结束整个方法。若 finally 代码块里有 return 或含有能够终止程序的代码,方法将在执行完 finally 之后被结束,不再跳回 try 代码块执行 return

在抛出异常的情况下,原理也是和上面的一样的,你把上面说到的 try 换成 catch 去理解就OK了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值