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了
阅读更多
想对作者说点什么?

博主推荐

换一批

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