ホームページ > Java > &#&チュートリアル > Java のメソッド カバレッジと例外処理のルールは何ですか?

Java のメソッド カバレッジと例外処理のルールは何ですか?

WBOY
リリース: 2023-09-06 18:29:13
転載
707 人が閲覧しました

Java のメソッド カバレッジと例外処理のルールは何ですか?

スーパークラス メソッドをオーバーライドする場合、メソッドが例外をスローする場合は、特定のルールに従う必要があります。

同じ例外またはサブタイプをスローする必要がある

スーパークラス メソッドが特定の例外をスローする場合、サブクラスのメソッドも同じ例外またはそのサブタイプをスローする必要があります。

次の例では、スーパークラスの readFile() メソッドは IOException をスローし、サブクラスの readFile() メソッドは FileNotFoundException をスローします。

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 IOException {
      throw new IOException();
   }
}
public class ExceptionsExample extends Super {
   @Override
   public String readFile(String path) throws FileNotFoundException {
      Scanner sc = new Scanner(new File("E://test//sample.txt"));
      String input;
      StringBuffer sb = new StringBuffer();
      while (sc.hasNextLine()) {
         input = sc.nextLine();
         sb.append(" "+input);
      }
      return sb.toString();
   }
   public static void main(String args[]) {
      String path = "E://test//sample.txt";
      ExceptionsExample obj = new ExceptionsExample();
      try {
         System.out.println(obj.readFile(path));
      }catch(FileNotFoundException e) {
         System.out.println("Make sure the specified file exists");
      }
   }
}
ログイン後にコピー

出力

Tutorials Point is an E-learning company that set out on its journey to provide knowledge to that class of readers that responds better to online content. With Tutorials Point, you can learn at your own pace, in your own space. After a successful journey of providing the best learning content at tutorialspoint.com, we created our subscription based premium product called Tutorix to provide Simply Easy Learning in the best personalized way for K-12 students, and aspirants of competitive exams like IIT/JEE and NEET.
ログイン後にコピー

Example

同様に、サブクラスがスーパークラスと同じ例外をスローした場合、プログラムは正常にコンパイルされ、実行されます。

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Scanner;
abstract class Super {
   public void sampleMethod()throws FileNotFoundException {
      System.out.println("Method of superclass");
   }
}
public class ExceptionsExample extends Super {
   public void sampleMethod()throws FileNotFoundException {
      System.out.println("Method of Subclass");
   }
   public static void main(String args[]) {
      ExceptionsExample obj = new ExceptionsExample();
      obj.sampleMethod();
   }
}
ログイン後にコピー

出力

Method of Subclass
ログイン後にコピー
ログイン後にコピー

スーパークラス例外はスローされません

スーパークラス メソッドが例外をスローする場合、サブクラスのメソッドはそのスーパークラス例外の種類をスローすべきではありません。

次の例では、スーパークラスの 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
ログイン後にコピー

例外をスローしません

親クラスのメソッドthrow は特定の例外をスローしますが、例外をスローせずにオーバーライドできます。

次の例では、親クラスのsampleMethod()メソッドはFileNotFoundException例外をスローしますが、サブクラスのsampleMethod()メソッドは例外をまったくスローしません。それにもかかわらず、プログラムはエラーなしでコンパイルおよび実行されます。

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Scanner;
abstract class Super {
   public void sampleMethod()throws FileNotFoundException {
      System.out.println("Method of superclass");
   }
}
public class ExceptionsExample extends Super {
   public void sampleMethod() {
      System.out.println("Method of Subclass");
   }
   public static void main(String args[]) {
      ExceptionsExample obj = new ExceptionsExample();
      obj.sampleMethod();
   }
}
ログイン後にコピー

出力

Method of Subclass
ログイン後にコピー
ログイン後にコピー

以上がJava のメソッド カバレッジと例外処理のルールは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:tutorialspoint.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート