为什么这段代码有错误?

时间:2016-02-19 00:17:03

标签: java

为什么编译器在类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);
 }
}

1 个答案:

答案 0 :(得分:0)

这里的问题在于efect方法:当你抛出MyExcept()时,方法efect应该有throws子句。喜欢:

public static void efect(int x) throws MyExcept

当您将extends更改为RuntimeException时,您没有收到编译器错误,因为运行时异常是未经检查的异常,编译器在编译时不会检查它。