Maison > Java > javaDidacticiel > Quelles sont les règles de couverture des méthodes et de gestion des exceptions en Java ?

Quelles sont les règles de couverture des méthodes et de gestion des exceptions en Java ?

WBOY
Libérer: 2023-09-06 18:29:13
avant
708 Les gens l'ont consulté

Quelles sont les règles de couverture des méthodes et de gestion des exceptions en Java ?

Lors de la substitution d'une méthode de superclasse, vous devez suivre certaines règles si la méthode lève une exception.

Devrait lever la même exception ou le même sous-type

Si une méthode de superclasse lève une certaine exception, la méthode de la sous-classe doit lever la même exception ou son sous-type.

Exemple

Dans l'exemple suivant, la méthode readFile() de la superclasse renvoie une exception IOException, tandis que la méthode readFile() de la sous-classe renvoie une exception FileNotFoundException.

Étant donné que l'exception FileNotFoundException est un sous-type de IOException, le programme peut se compiler et s'exécuter sans aucune erreur.

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");
      }
   }
}
Copier après la connexion

Output

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.
Copier après la connexion

Exemple

De même, si la sous-classe lève la même exception que la superclasse, le programme sera compilé et exécuté avec succès.

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();
   }
}
Copier après la connexion

Output

Method of Subclass
Copier après la connexion
Copier après la connexion

ne devrait pas lancer d'exceptions de superclasse

Si une méthode de superclasse lève une exception, les méthodes des sous-classes ne doivent pas lancer sa superclasse.

Exemple

Dans l'exemple suivant, la méthode readFile() de la superclasse lève une exception FileNotFoundException, tandis que la méthode readFile() de la sous-classe lève une exception IOException, qui est la superclasse de 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 ......
   }
}
Copier après la connexion

Erreur de compilation

Une fois compilé, le programme ci-dessus donne le résultat suivant -

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
Copier après la connexion

Ne lève aucune exception

Si la méthode de la classe parent lève une exception, vous pouvez la remplacer sans lever aucune exception.

Exemple

Dans l'exemple ci-dessous, la méthode sampleMethod() de la classe parent lève une exception FileNotFoundException, tandis que la méthode sampleMethod() de la sous-classe ne lève aucune exception. Néanmoins, le programme se compile et s'exécute sans aucune erreur.

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();
   }
}
Copier après la connexion

sortie

Method of Subclass
Copier après la connexion
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal