Comprendre l'erreur « Exception non signalée » en Java
Les programmeurs Java rencontrent souvent des erreurs telles que « erreur : exception non signalée ; doit être intercepté ou déclaré comme étant lancé", où XXX est un nom de classe d'exception. Cette erreur signifie qu'une exception vérifiée est levée ou propagée sans être gérée correctement dans la portée actuelle.
Exceptions cochées et non cochées
Les exceptions Java sont classées comme étant cochées. ou décoché. Les exceptions vérifiées, dérivées de Throwable mais excluant RuntimeException et ses sous-classes, doivent être traitées directement dans la méthode ou le constructeur où elles se produisent. Les exceptions non vérifiées, telles que Error et RuntimeException et ses sous-classes, ne nécessitent pas de gestion explicite.
Gestion des exceptions vérifiées
Pour traiter une exception vérifiée, vous pouvez soit :
-
Catch and Handle : Utilisez une instruction try ... catch pour gérer l'exception dans le portée actuelle, comme le montre cet exemple :
try {
// Do some operations
if (condition) {
throw new IOException("Cannot read file");
}
// Continue operations
} catch (IOException ex) {
// Handle the exception
}
Copier après la connexion
-
Déclarer comme lancé : Déclarer que la méthode ou le constructeur englobant lève l'exception, en passant la responsabilité de la gestion à l'appelant, comme indiqué ci-dessous :
public void doThings() throws IOException {
// Perform the same operations as in the catch-handle example
}
Copier après la connexion
Décider du Approche appropriée
La méthode de traitement appropriée dépend du contexte et de la nature de l'exception. Tenez compte des directives suivantes :
- Gérez les exceptions au niveau où vous pouvez les résoudre efficacement.
- N'attrapez pas Exception ou Throwable, car cela peut conduire à détecter des exceptions inattendues.
- Ne déclarez pas les méthodes comme lançant une exception, car cela oblige l'appelant à gérer toutes les exceptions potentielles vérifiées.
- Évitez d'écraser exceptions, car cela peut rendre le diagnostic des erreurs d'exécution plus difficile.
Cas particuliers
-
Initialiseurs statiques : Exceptions vérifiées dans les initialiseurs statiques peuvent être gérés à l'aide de blocs statiques.
-
Statique Blocs : Les exceptions vérifiées dans les blocs statiques doivent être interceptées dans le bloc car il n'y a pas de contexte englobant.
-
Lambdas : Les Lambdas ne peuvent généralement pas lancer d'exceptions non vérifiées, comme déterminé par l'interface de la fonction. qu'ils implémentent.
-
Noms d'exceptions en double : Assurez-vous que les exceptions portant le même nom ont des noms complètement différents noms qualifiés, sinon le compilateur ne les reconnaîtra pas comme des exceptions distinctes.
Ressources supplémentaires
-
Tutoriel Oracle Java :
- L'exigence de capture ou de spécification
- Capture et manipulation exceptions
- Spécifier les exceptions levées par une méthode
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!