覆盖方法能否抛出 Java 中被覆盖方法抛出的异常的超类型?
如果超类方法抛出某个异常,则子类方法不应抛出其超类型。
示例
在下面的示例中,超类的 readFile() 方法抛出 FileNotFoundException 异常,而子类的 readFile() 方法抛出一个 IOException,它是 FileNotFoundException 的超类型。
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Scanner;
abstract class Super {
public String readFile(String path)throws FileNotFoundException {
throw new FileNotFoundException();
}
}
public class ExceptionsExample extends Super {
@Override
public String readFile(String path)throws IOException {
//method body ......
}
}编译时错误
在编译时,上述程序会输出以下内容 −
ExceptionsExample.java:13: error: readFile(String) in ExceptionsExample cannot override readFile(String) in Sup
public String readFile(String path)throws IOException {
^
overridden method does not throw IOException
1 error
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP