java异常处理机制和抽象方法的重写或者接口方法的实现问题
java类的方法重写时规定子类方法重写不能抛出超越父类方法定义的异常类的范围这个时没错的
但是对于抽象方法或者接口竟然编译运行通过:
举例如下:
import java.io.IOException;
class MyException extends Exception {
}
interface Inf1 {
void test1() throws MyException;
}
class A implements Inf1 {
public void test1() throws java.lang.NumberFormatException {
// public void test1() throws IOException {
NumberFormatException e = new NumberFormatException("测试");
throw e ;
}
}
如上NumberFormatException 和 MyException时没有继承体系的,但是该方法编印和运行都正确
但是大家看注释的那一行,如果抛出IOException 则编译出错
IOException 未已检测异常
NumberFormatException 和MyException为未检测异常
有人对异常机制内部研究过的来解释一下