mots-clés throws en Java
Le mot-clé throws
en Java est utilisé dans les déclarations de méthodes pour spécifier que la méthode peut lancer une ou plusieurs exceptions. Elle permet aux méthodes de signaler qu'elles peuvent rencontrer des conditions exceptionnelles qu'elles ne sont pas en mesure de gérer.
Utilisation
Le mot-clé throws
est placé dans la signature de la méthode après la liste des paramètres et avant le corps de la méthode. Elle est suivie d'une liste de classes d'exceptions séparées par des virgules que la méthode peut lancer.
Syntax
returnType methodName(parameters) throws ExceptionType1, ExceptionType2 {
// method body
}
returnType
: Le type de retour de la méthode.methodName
: Le nom de la méthode.parameters
: Les paramètres de la méthode.ExceptionType1, ExceptionType2
: Les exceptions que la méthode peut lever.
Exemples
Exemple 1 : Exception unique
public void readFile(String fileName) throws IOException {
FileReader file = new FileReader(fileName);
BufferedReader fileInput = new BufferedReader(file);
// Read file content
for (int counter = 0; counter < 3; counter++)
System.out.println(fileInput.readLine());
fileInput.close();
}
Dans cet exemple, la méthode readFile
déclare qu'elle peut lancer un IOException
. Cela indique que la méthode peut rencontrer une erreur d'entrée/sortie qu'elle ne peut pas gérer en interne.
Exemple 2 : Exceptions multiples
public void processFile(String fileName) throws IOException {
FileReader file = new FileReader(fileName);
BufferedReader fileInput = new BufferedReader(file);
// Read file content
for (int counter = 0; counter < 3; counter++)
System.out.println(fileInput.readLine());
fileInput.close();
}
Ici, la méthode processFile
déclare qu'elle peut lancer à la fois IOException
et FileNotFoundException
. Cela informe l'appelant que la méthode peut rencontrer l'une ou l'autre de ces exceptions.
Exemple 3 : Exception personnalisée
public class CustomException extends Exception {
public CustomException(String message) {
super(message);
}
}
public void validateAge(int age) throws CustomException {
if (age < 18) {
throw new CustomException("Age must be 18 or older.");
}
System.out.println("Age is valid.");
}
Dans cet exemple, une exception personnalisée CustomException
est créée. La méthode validateAge
déclare qu'elle peut lancer cette exception personnalisée si l'âge est inférieur à 18 ans.
Conseils et bonnes pratiques
- Déclarer des exceptions spécifiques: Déclarez les exceptions les plus spécifiques possibles plutôt que d'utiliser une classe générique
Exception
. Cela rend le code plus lisible et plus facile à maintenir.public void method() throws IOException, SQLException { // method body }
- Exceptions relatives aux documents: Documentez toujours les exceptions qu'une méthode peut lancer à l'aide de commentaires Javadoc. Cela permet aux autres développeurs de comprendre les risques potentiels et de les gérer de manière appropriée.
/** * Reads a file and prints its content. * * @param fileName the name of the file to read * @throws IOException if an I/O error occurs */ public void readFile(String fileName) throws IOException { // method body }
- Utilisez
throws
avec discernement: N'utilisez le mot-cléthrows
que lorsque la méthode ne peut pas gérer l'exception en interne. Si possible, traitez les exceptions au sein de la méthode afin d'obtenir une application plus robuste et plus conviviale.public void readFile(String fileName) { try { FileReader file = new FileReader(fileName); BufferedReader fileInput = new BufferedReader(file); // Read file content for (int counter = 0; counter < 3; counter++) System.out.println(fileInput.readLine()); fileInput.close(); } catch (IOException e) { System.err.println("An error occurred: " + e.getMessage()); } }
- Propager les exceptions: Lorsque vous propagez des exceptions, assurez-vous que la méthode appelante est capable de les gérer ou de les propager plus haut dans la pile d'appels.