关于Java异常处理中的try、catch、finally

各自用法

try块:包含可能会有异常发生的代码
catch块:当有异常发生的时候才会执行
finally块:无论是否有异常发生都会执行

基本格式

try {
    					
    					//可能会有异常发生的代码
    					
}catch(Exception e) {
   						
   						// 当有异常发生的时候,catch块被执行
   						
}finally {
  						
  						//不管异常是否发生都要执行
  						
}

无异常情况下的执行情况

无异常时的代码如下

		try {
			
			int a=10;
			int b=2;
			int c=a/b;
			System.out.println("运行try块");
			
		}catch(Exception e) {
			
			System.out.println("运行catch块");		
			
		}finally {
			
			System.out.println("运行finally块");
			
		}

执行结果如下图

在这里插入图片描述
结论

当代码无异常时运行try块和finally块内的内容,不执行catch块内的内容。

出现异常情况下的执行情况

出现异常时的代码如下

		try {
			
			int a=10;
			int b=0;
			int c=a/b;
			System.out.println("运行try块");
			
		}catch(Exception e) {
			
			System.out.println("运行catch块");		
			
		}finally {
			
			System.out.println("运行finally块");
			
		}

执行结果如下图
在这里插入图片描述
结论

当代码出现异常时运行catch块和finally块内的内容,不执行try块内的内容。

无异常情况下try和catch的执行顺序

代码无异常的情况下,在try块、catch块中各添加一个return语句,代码如下

		try {
			
			int a=10;
			int b=2;
			int c=a/b;
			return "运行try块";
			
		}catch(Exception e) {
			
			return "运行catch块";		
			
		}

执行结果如下图
在这里插入图片描述
结论

当存在return语句时,代码无异常的情况下返回的是try块的内容,即执行的是try块,不执行catch块

出现异常情况下try和catch的执行顺序

代码有异常的情况下,条件同上,代码如下

	try {
			
			int a=10;
			int b=0;
			int c=a/b;
			return "运行try块";
			
		}catch(Exception e) {
			
			return "运行catch块";		
			
		}

执行结果如下图
在这里插入图片描述
结论

当存在return语句时,代码出现异常的情况下返回的是catch块的内容,即执行的是catch块,不执行try块

在有、无异常情况下try、catch和finally的执行顺序

在代码无异常和有异常两种情况下,在try块、catch块和finally中各添加一个return语句,代码如下

		//代码无异常
		try {
			
			int a=10;
			int b=2;
			int c=a/b;
			return "运行try块";
			
		}catch(Exception e) {
			
			return "运行catch块";		
			
		}finally {
			
			return "运行finally块";
			
		}
		//代码有异常
		try {
			
			int a=10;
			int b=0;
			int c=a/b;
			return "运行try块";
			
		}catch(Exception e) {
			
			return "运行catch块";		
			
		}finally {
			
			return "运行finally块";
			
		}

在有、无异常出现的执行结果为同一结果
在这里插入图片描述
结论

当try、catch、finally块同时存在return语句时,无论是否出现异常,返回的都是finally块的内容,即只执行了finally块内的return

总结

  • try块中有return关键字时,如没有finally,则直接返回
  • try块和catch块中都有return关键字时,无异常走try的return,有异常则走catch的return
  • 当try、catch、finally块中都有return关键字时,无论是否出现异常,返回的都是finally块的return
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值