java tyr{}catch语句

 

try代码块里放的是尝试执行的代码

catch是用于捕捉处理异常的 
 try {可能出现异常的代码
  } catch(异常类名A e){
  如果出现异常类A类异常,那么执行该代码
  } ...(catch可以有多个)
   finally {
必须要执行的代码   处理完异常后 在 抛出新的异常前 必须执行的代码段
  }

 提前返回值,finally中对变量赋值无效

public static void main(String[] args) {
	public static int demo() {
		int i=1;
		try {
			 i=i/0;
			 System.out.println(i);
		} catch (Exception e) {
			i=3;
			System.out.println(i);
			return i;
		}finally {
			i=4;
			System.out.println(i);
		}
		return i;
	//结论: 如果catch中有return存在,且返回值已被确定,finally中对返回值的修改将不起作用
	}
}

finally会在每一次异常捕捉执行完后执行

public static void main(String[] args) {
	int i=1;
	try {
		 i=i/0;
		 System.out.println(i);
	} catch (Exception e) {
		System.out.println(i);
		throw new RuntimeException();//抛出新的异常,finally是 处理完异常后 在 抛出新的异常前必须执行的代码段
	}finally {
		System.out.println(i+ 1);
	}
	System.out.println(i + 2);
	}
}

内外层嵌套try catch的话 从内到外执行,且内部catch执行完的话外部将不会捕捉到异常,但finally会执行  但这里不太懂为什么外部finally比内部最终输出程序执行要早

public static void main(String[] args) {
	try {
		try {
		     int num[]=new int[5];
		     num[6]=2;    
		}catch (Exception e) {
			System.err.println("内catch");
		}finally {
			System.err.println("内finally");
		}
		System.out.println("内输出");	
	}catch (Exception e) {
		System.err.println("外catch");
	}finally {
		System.err.println("外finally");	
	}
	System.out.println("外输出");
}

贴一个大神的链接,开头文案参考于他 java中try...catch处理异常

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值