我想了解对象抛出和方法重写。在Java中抛出异常的方法抛出异常
我有一段代码:
public class ExceptionClass{
void m() throws SQLException{}
}
class A extends ExceptionClass{
void m() throws Exception{}
}
这给出了一个错误“异常异常是不兼容于ExceptionClass.m throws子句()”。
同样的,如果我写的是:
public class ExceptionClass{
void m() throws SQLException{}
}
class A extends ExceptionClass{
void m() throws RuntimeException{}
}
这并不给予任何错误和方法也被重写正常。 经过一些分析,我认为可能是,因为SQLException从Exception类扩展,因此我们不能在子类(我们正在改变重写方法的签名)中将“SQLException”替换为“Exception”。
但后来我这样做:
public class ExceptionClass{
void m() throws NullPointerException{}
}
class A extends ExceptionClass{
void m() throws RuntimeException{}
}
但这里没有错误..!我认为它应该给出同样的错误,因为我上面提到的原因。
我不知道为什么会以这种方式表现。 当我们重写方法时会遵循什么规则,这会在方法签名中引发异常。
重点是OP声明重写方法抛出更广泛的异常 –
@JigarJoshi:看起来他已经明白了。 – SLaks
_当我们覆盖methods_时,还有什么规则要遵循_ –