覆盖方法可以抛出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中被覆盖方法抛出的异常的超类型吗? 的全部内容, 来源链接: utcz.com/z/349029.html

回到顶部