为什么编译器在类MyExcept扩展Exception时发出错误信号,但在扩展RuntimeException时它没有?
class MyExcept extends Exception{}
class Main{
public static void efect(int x){
if(x==0)throw new MyExcept();
}
public static void main(String argv[]){
int x=0;
for(int i=0;i<2;i++){
try{
for(int k=0;k<2;k++){
x++;
efect(k);
}
}catch(MyExcept e){
System.out.println(e);
}
}
System.out.println(x);
}
}
答案 0 :(得分:0)
这里的问题在于efect方法:当你抛出MyExcept()时,方法efect应该有throws子句。喜欢:
public static void efect(int x) throws MyExcept
当您将extends更改为RuntimeException时,您没有收到编译器错误,因为运行时异常是未经检查的异常,编译器在编译时不会检查它。