欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

try-catch和throw,throws的区别

程序员文章站 2022-07-14 10:27:20
...

参考文章

https://www.cnblogs.com/zhangdaicong/p/6127984.html

 

throw跟try...catch...finally的对比:

public class ZeroTest {
	public static void main(String[] args) {
		try {
			int i = 100 / 0;
			System.out.print(i);
		} catch (Exception e) {
			System.out.print(1);
			throw new RuntimeException();
		} finally {
			System.out.print(2);
		}
		System.out.print(3);
	}
}


try catch是直接处理,处理完成之后程序继续往下执行,throw则是将异常抛给它的上一级处理,程序便不往下执行了。
本题的catch语句块里面,打印完1之后,又抛出了一个RuntimeException,程序并没有处理它,而是直接抛出,因此执行完finally语句块之后,程序终止了。
执行结果12。首先执行try,遇到算术异常,抛出,执行catch,打印1,然后抛出RuntimeException,缓存异常,执行finally,打印2,然后抛出RuntimeException。
如果catch中没有抛出RuntimeException,则执行结果为123。