java学习--try catch finally


今天看到一段视频讲try catch finally,然后觉得不错,就把其中的内容再写一遍

这里主要讲一道题:

try{}里有一个return语句,那么紧跟在try后的finally{}里的代码会不会被执行,什么时候被执行

a. 不会执行

b. 会执行,在return前执行

c. 会执行,在return后执行

d. 会执行,可能在return前执行,也可能在return后执行


下面是一段示例代码:


package exercise;

public class trycatch {
	
     public void demo01() {
    	 try{
    		 System.out.println("try.......");
    		 //Integer.parseInt("java");
    		 return;
    	 }catch(Exception e){
    		 System.out.println("catch........");
    		 e.printStackTrace();
    	 }finally{
    		 System.out.println("finally........");
    	 }
     }
     
     public static void main(String[] args) {
    	 trycatch try1 = new trycatch();
    	 try1.demo01();
     }
}

执行结果:

try.......
finally........

这表明,finally{}是在return之前执行的,所以选B

若是把注释掉的那行代码的注释去掉,执行结果:

try.......
catch........
java.lang.NumberFormatException: For input string: "java"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at exercise.trycatch.demo01(trycatch.java:8)
at exercise.trycatch.main(trycatch.java:20)
finally........

这里处理异常以后,就不会再执行return了


原理(原因):

finally{}中一般用来释放资源(例如:connection close,流的关闭等),所以应先释放资源再return;

无论是否有异常,都会执行finally中的语句


其他:

健壮性的一个保证(JDBC:捕获sql语句异常)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值