Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

재정의하는 메서드가 Java에서 재정의된 메서드에 의해 throw된 예외의 상위 유형을 throw할 수 있습니까?

<시간/>

상위 클래스 메서드가 특정 예외를 throw하는 경우 하위 클래스의 메서드는 상위 유형을 throw하지 않아야 합니다.

예시

다음 예에서 상위 클래스의 readFile() 메서드는 FileNotFoundException 예외를 발생시키고, 하위 클래스의 readFile() 메서드는 FileNotFoundException의 상위 유형인 IOException을 발생시킵니다.

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