猿问

你好,请问检查时异常为什么不能捕获再抛出,编译不通过

public class TestEx3 {
public static ServerSocket ss = null;

public static void doEx1() {
try {
ss = new ServerSocket(5678);
Socket socket = ss.accept();

} catch (IOException e) {
System.out.println("doEx1处理IO异常");
throw e;
}
}

public static void main(String[] args) {
try {
doEx1();

} catch (IOException e) {
System.out.println("mian方法处理IO异常");
} finally {
System.out.println("程序结束");
}
}

}

慕仙森
浏览 196回答 1
1回答

湖上湖

这是java的默认配置。当你把一个异常定义在方法的throws定义中,你就可以不处理这个异常,系统会自动把该异常抛出。 而RuntimeException则是java设计中所有方法都默认定义在throws中了,所以只要你不捕获,就会一层一层的往上抛出。除非你显示的标准要捕获它。否则不会被捕获。也不会造成编译异常。其实大部分的RuntimeException,要么是系统异常。无法处理。例如网络问题。要么就是应该在UT中发现的,例如空指针异常。
随时随地看视频慕课网APP
我要回答