详述try-catch-fianlly

目录

1.try-catch的使用

2.finally

3.try-catch的注意事项


1.try-catch的使用

当代码中出现异常的时候,后面的同级代码便不能执行了。

这时将以下代码中的异常语句用try-catch语句包裹起来,前后的同级语句便可以正常执行了,这就是对异常代码处理的结果:

public class Test {

	public static void main(String[] args) {
		System.out.println("111");
		try {
			System.out.println(1/0);
		} catch (ArithmeticException e) {
			e.printStackTrace();
		}
		System.out.println("222");
	}
}

我们来用通俗的语言来分析一下这个try-catch语句:try语句就相当于对花括号中的这条异常语句“重点关照”,一旦发现它满足catch语句中的执行条件,即符合ArithmeticException类异常,则catch语句负责将该异常语句进行捕捉,并执行代码块中的命令。

2.finally

finally的用法是无论try中是否有异常发生,finally代码块中的代码都要执行,一般用于释放资源。

也就是说就算代码块中没有异常语句,在try-catch格式的finally语句中的代码块都会执行到,下面是finally的用法:

public class Test {

	public static void main(String[] args) {
		System.out.println("111");
		try {
			System.out.println(1/1);
		} catch (ArithmeticException e) {
			e.printStackTrace();
		}finally {
			System.out.println("执行");
		}
		System.out.println("222");
	}
}

3.try-catch的注意事项

 ①try可以接一个或多个catch,但不能没有catch

当异常发生时,你想知道是属于哪一类的异常,可以列出几个可能属于的类,然后使用多个catch语句,通过观察执行的是哪一个catch语句,便可以知道究竟是属于哪一类异常了,如下:

public class Test {

	public static void main(String[] args) {
		System.out.println("111");
		try {
			System.out.println(1/0);
		} catch (ArithmeticException e) {
			e.printStackTrace();
		} catch (NullPointerException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		}
		System.out.println("222");
	}
}

看到执行结果,便知道该异常是属于ArithmeticException类的异常了。

但是try后面不能没有catch语句,原因是:如果没有语句对“重点照顾”的异常语句进行处理的话,那try语句对其的“重点照顾”不就没有意义了嘛?所以try后面至少要有一个catch语句。

 ② 多个catch中的顺序问题

如果我们把上段代码中的第三个catch语句放为第一个,就会发现编译器报错了,因为第三个catch语句的执行条件中,Exception是另外两个执行条件中ArithmeticException和NullPointerException的父类,所以编译器便判断出无论如何都不会执行到后两个catch语句,所以便会报错:

public class Test {

	public static void main(String[] args) {
		System.out.println("111");
		try {
			System.out.println(1/0);
		} catch (Exception e) {
			e.printStackTrace();
		} catch (ArithmeticException e) {
			e.printStackTrace();
		} catch (NullPointerException e) {
			e.printStackTrace();
		} 
		System.out.println("222");
	}
}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值