java关于抛出异常的小细节

业余接触java 4年,但最近才发现一个关于抛出异常的小细节

try{
	int y=0/0;
}catch(Exception e){
	e.printStackTrace();
	try {
		throw new Exception();//这一行必须加try-catch才编译通过
	} catch (Exception e1) {}
	throw e;//这一行无论加不加try-catch都编译通过
}
后面的throw e;不用加try-catch另我很困惑,但是后来我修改了一下

try{
	int y=0/0;
	new Socket("127.0.0.1",1000).close();
}catch(Exception e){
	e.printStackTrace();
	try {
		throw new Exception();//这一行必须加try-catch才编译通过
	} catch (Exception e1) {}
	throw e;//这时这一行就必须加try-catch才能编译通过了
}
也就是说,java编译器会识别try{}里可能会抛出那些异常,如果try{}里可能抛出的异常都是RuntimeException那么在catch里把异常向上抛出时就不必加try-catch了
阅读更多
文章标签: java
个人分类: java
上一篇java BigDecimal实现高精度数学函数计算
下一篇贝塞尔曲线生成动画
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭