<分区>
有谁知道为什么对于覆盖过程,覆盖方法必须抛出与被覆盖方法相同类型(或子类型)的异常,而另一方面对于构造函数,它以相反的方式工作(因此,必须抛出相同的异常)父类(super class)抛出的异常或父类(super class)型。 非常感谢。
<分区>
有谁知道为什么对于覆盖过程,覆盖方法必须抛出与被覆盖方法相同类型(或子类型)的异常,而另一方面对于构造函数,它以相反的方式工作(因此,必须抛出相同的异常)父类(super class)抛出的异常或父类(super class)型。 非常感谢。
最佳答案
构造函数不会覆盖其父类(super class)的构造函数,但它们会显式或隐式地调用父类(super class)构造函数。因此,就像一个调用其他方法并抛出 Exception
的方法一样,构造函数必须要么捕获父类(super class)的构造函数抛出的异常,要么必须声明它抛出相同的异常(或那个异常(exception))。
另一方面,覆盖方法必须遵守父类(super class)的方法定义。因此,它可以抛出更具体的异常或根本不抛出异常。但它不能抛出更广泛的异常,因为那样会违反父类(super class)的约定。
关于java - Exception Java 的异常构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15298995/