Exception non signalée : signification et résolution
Les programmeurs Java rencontrent souvent des erreurs formulées comme suit :
"erreur : exception non signalée où XXX est le nom de une classe d'exception."
Signification et Java Concepts
Cette erreur signifie que :
- Le code lève ou propage une exception vérifiée (XXX).
- L'exception n'est pas correctement gérée en l'attrapant ou en le déclarant comme l'exige Java.
Résolution
Pour résoudre le problème, vous avez deux options :
-
Intercepter l'exception : Utilisez un bloc try ... catch pour gérer l'exception dans la méthode actuelle.
-
Déclarer que la méthode renvoie l'exception : Ajoutez le mot-clé throws suivi du nom de l'exception dans la méthode ou la signature du constructeur pour transmettre la responsabilité de gestion des exceptions à l'appelant.
Vérifié vs exceptions non vérifiées
Java classe les exceptions en deux types :
-
Exceptions vérifiées : Throwable, Exception (et sous-classes), à l'exclusion de RuntimeException et de ses sous-classes.
-
Exceptions non vérifiées : Erreur (et sous-classes), RuntimeException (et sous-classes).
Les exceptions cochées nécessitent une gestion explicite, contrairement aux exceptions non cochées.
Exemple : lancer et attraper dans la même méthode
static void t() throws IllegalAccessException {
try {
throw new IllegalAccessException("demo");
} catch (IllegalAccessException e) {
System.out.println(e);
}
}
Dans cet exemple, la méthode t lève une exception, mais elle est également interceptée et gérée dans la même méthode. Par conséquent, la déclaration throws dans la signature doit être supprimée.
Mauvaises pratiques avec exceptions
Évitez les mauvaises pratiques suivantes :
-
Catching Exception (ou Throwable) : Attrapez plutôt des exceptions spécifiques pour éviter des erreurs involontaires. gestion.
-
Déclarer les méthodes comme exception de lancement : Évitez de forcer les appelants à gérer potentiellement toute exception vérifiée.
-
Écraser les exceptions : N'ignorez pas les exceptions car ils peuvent rendre les erreurs d'exécution plus difficiles à diagnostiquer.
Spécial Cas
-
Initialiseurs statiques : Déclarez des variables statiques en lançant des exceptions vérifiées dans des blocs statiques au lieu de déclarations de champs.
-
Blocs statiques : Les exceptions interceptées dans les blocs statiques doivent être manipulé à l'intérieur du bloc car il n'y a pas d'enceinte contexte.
-
Lambdas : Lambdas ne peut pas lever d'exceptions non vérifiées en raison des exigences de l'interface de fonction. Gérez les exceptions au sein du lambda lui-même.
-
Deux exceptions avec le même nom : Si le compilateur signale une erreur "exception non signalée" malgré la présence du mot-clé throws, vérifiez si les noms d'exception ont des noms différents noms pleinement qualifiés, indiquant différentes exceptions.
En outre Informations
Reportez-vous aux ressources suivantes pour obtenir des informations détaillées sur les exceptions Java :
- [Tutoriel Oracle Java : L'exigence catch ou spec](https://docs.oracle .com/javase/tutorial/essential/exceptions/catchOrDeclare.html)
- [Capture et manipulation exceptions](https://docs.oracle.com/javase/tutorial/essential/exceptions/handling.html)
- [Spécification des exceptions levées par une méthode](https://docs.oracle.com /javase/tutorial/essential/exceptions/throwing.html)
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!
Déclaration: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