Computer >> Máy Tính >  >> Lập trình >> Java

Phương thức ghi đè có thể ném loại siêu ngoại lệ được ném bởi phương thức ghi đè trong Java không?

Nếu phương thức siêu lớp ném ra một ngoại lệ nào đó, phương thức trong lớp con sẽ không ném kiểu siêu của nó.

Ví dụ

Trong ví dụ sau, phương thức readFile () của lớp siêu ném ngoại lệ FileNotFoundException và phương thức readFile () của lớp con ném ra một IOException, là kiểu siêu của 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 ......
   }
}

Lỗi thời gian biên dịch

Khi biên dịch, chương trình trên cung cấp cho bạn kết quả sau -

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