尝试覆盖父类的方法时出现编译错误:
public class Reader {
public void readToDbFromFile(String fileName, String table) throws FileNotFoundException() {
....
}
}
public class ReaderWithBackup extends Reader {
@Override
public void readToDbFromFile(String fileName, String table) throws IOException {
super.readToDbFromFile();
doBackup(fileName, table);
}
...
}
它表示' overriden方法不会抛出IOException'。这是什么意思?我该如何解决?
提前致谢。
答案 0 :(得分:0)
你不能在子类的重写方法中抛出超级类的Parent Exception
。
由于FileNotFoundException
是IOException
的子类,因此不能在子类中抛出IOException
。
所以你可以通过交换IOException
和FileNotFoundException
来做到这一点: -
public class Reader {
public void readToDbFromFile(String fileName, String table) throws IOException () {
....
}
}
public class ReaderWithBackup extends Reader {
@Override
public void readToDbFromFile(String fileName, String table) throws FileNotFoundException{
super.readToDbFromFile();
doBackup(fileName, table);
}
...
}
答案 1 :(得分:0)
在你的课堂上readToDbFromFile
抛出FileNotFoundException
。您应该在覆盖功能中抛出FileNotFoundException
而不是IOException
。