Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 例外覆盖规则_Java_Overriding - Fatal编程技术网

Java 例外覆盖规则

Java 例外覆盖规则,java,overriding,Java,Overriding,Java重写规则说被重写的方法不能抛出父异常,但这个示例运行良好。有人能解释一下吗 public class TestA { public void display() throws ArithmeticException{ System.out.println("inside parent"); } } public class Test extends TestA{ public void display() throws RuntimeExce

Java重写规则说被重写的方法不能抛出父异常,但这个示例运行良好。有人能解释一下吗

public class TestA {
    public  void display() throws ArithmeticException{
        System.out.println("inside parent");
    }
}


public class Test extends TestA{
    public void display() throws RuntimeException{
     System.out.println("inside child");
   }
}

在重写方法中,始终允许您声明它抛出
RuntimeException
,因为
RuntimeException
是未检查的异常。通常不会声明方法抛出
RuntimeException
s,但如果愿意,可以这样做

国家:

允许但不要求在条款中提及未经检查的异常类(§11.1.1)

此外,缔约国:

对于m2的throws子句中列出的每个选中的异常类型,在m1的throws子句的擦除(§4.6)中必须出现相同的异常类或其超类型之一;否则,将发生编译时错误


但是
RuntimeException
是未选中的,因此它不需要出现在超类方法的
throws
子句中。

在重写方法中,始终允许声明它抛出
RuntimeException
,因为
RuntimeException
是未选中的异常。通常不会声明方法抛出
RuntimeException
s,但如果愿意,可以这样做

国家:

允许但不要求在条款中提及未经检查的异常类(§11.1.1)

此外,缔约国:

对于m2的throws子句中列出的每个选中的异常类型,在m1的throws子句的擦除(§4.6)中必须出现相同的异常类或其超类型之一;否则,将发生编译时错误


但是
RuntimeException
是未选中的,因此它不需要出现在超类方法的
throws
子句中。

在重写方法中,始终允许声明它抛出
RuntimeException
,因为
RuntimeException
是未选中的异常。通常不会声明方法抛出
RuntimeException
s,但如果愿意,可以这样做

国家:

允许但不要求在条款中提及未经检查的异常类(§11.1.1)

此外,缔约国:

对于m2的throws子句中列出的每个选中的异常类型,在m1的throws子句的擦除(§4.6)中必须出现相同的异常类或其超类型之一;否则,将发生编译时错误


但是
RuntimeException
是未选中的,因此它不需要出现在超类方法的
throws
子句中。

在重写方法中,始终允许声明它抛出
RuntimeException
,因为
RuntimeException
是未选中的异常。通常不会声明方法抛出
RuntimeException
s,但如果愿意,可以这样做

国家:

允许但不要求在条款中提及未经检查的异常类(§11.1.1)

此外,缔约国:

对于m2的throws子句中列出的每个选中的异常类型,在m1的throws子句的擦除(§4.6)中必须出现相同的异常类或其超类型之一;否则,将发生编译时错误


但是
RuntimeException
是未选中的,因此它不需要在超类方法的
throws
子句中。

RuntimeException
是未选中的异常,可以从任何方法中抛出。与检查的异常不同,方法重写的规则在此不适用。

RuntimeException是未检查的异常,可以从任何方法中抛出。与检查的异常不同,方法重写的规则在此不适用。

RuntimeException是未检查的异常,可以从任何方法中抛出。与检查的异常不同,方法重写的规则在此不适用。

RuntimeException是未检查的异常,可以从任何方法中抛出。与选中的异常不同,方法重写的规则在此不适用。

RuntimeException
未选中,它根本不需要声明。
RuntimeException
未选中,它根本不需要声明。
RuntimeException
未选中,它根本不需要声明。
RuntimeException
未选中,它根本不需要声明。