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了

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

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试