Maison > Java > javaDidacticiel > Pourquoi est-ce que j'obtiens le message « Erreur : exception non signalée ; doit être interceptée ou déclarée pour être levée » en Java ?

Pourquoi est-ce que j'obtiens le message « Erreur : exception non signalée ; doit être interceptée ou déclarée pour être levée » en Java ?

Mary-Kate Olsen
Libérer: 2024-12-23 08:24:13
original
433 Les gens l'ont consulté

Why am I getting the

Dévoilement de l'énigme : "erreur : exception non signalée" en Java

Rencontre avec l'énigmatique "erreur : exception non signalée ; doit être attrapé ou déclaré être lancé" ? Ne vous inquiétez pas ; comprendre cette erreur de compilation éclairera les concepts Java et vous guidera vers sa résolution.

Démêler le message d'erreur :

L'erreur signifie que votre code a généré ou propagé un a vérifié l'exception nommée XXX et n'a pas réussi à la gérer de manière appropriée.

Concepts derrière le erreur :

Java classe les exceptions en deux types :

  • Exceptions vérifiées : Dérivé de java.lang.Throwable et Exception, à l'exclusion de RuntimeException et de ses sous-classes, ces exceptions doivent être traitées dans leur méthode englobante ou constructeur.
  • Exceptions non vérifiées : Comprenant Error et ses sous-classes et RuntimeException et ses sous-classes, les exceptions non vérifiées n'ont pas besoin d'être traitées explicitement.

Résoudre le problème :

Pour résoudre l'erreur, vous devez gérer l'exception vérifiée dans le code soit :

  • Capturer et gérer l'exception : En enfermant l'instruction qui déclenche l'exception dans un bloc try ... catch, comme illustré dans l'exemple de code ci-dessous :
try {
    // Code that may throw the checked exception
    if (someFlag) {
        throw new IOException("cannot read something");
    }
    // Subsequent code
} catch (IOException ex) {
    // Handle the exception gracefully
}
Copier après la connexion
  • Déclarer que la méthode ou le constructeur englobant lève l'exception : En ajoutant une clause throws XXX à la déclaration de méthode ou de constructeur, vous déléguez la responsabilité de gérer l'exception à l'appelant de la méthode ou du constructeur. Ci-dessous un exemple :
public void doThings() throws IOException {
    // Code that may throw an IOException
    if (someFlag) {
        throw new IOException("cannot read something");
    }
    // Subsequent code
}
Copier après la connexion

Faire le bon choix :

La bonne approche dépend du contexte et de la gestion souhaitée de l'exception au sein de votre code. Tenez compte du niveau de gravité et de la capacité à récupérer de l'exception au moment de la gestion.

Considérations particulières :

  • Initialiseurs statiques : La gestion des exceptions vérifiées dans les initialiseurs statiques nécessite une gestion minutieuse en raison des restrictions de syntaxe. Envisagez plutôt d'utiliser des blocs statiques.
  • Blocs statiques : Les exceptions vérifiées doivent être interceptées dans des blocs statiques car il n'y a pas de contexte englobant.
  • Lambdas : Les Lambdas ne peuvent pas lancer d'exceptions non vérifiées en raison de l'interface de fonction qu'ils utilisent. Gérez les exceptions au sein du lambda lui-même.
  • Exceptions multiples : Si les noms complets des exceptions sont différents malgré le même nom, ces exceptions sont distinctes. Gérez-les individuellement.

Ressources supplémentaires :

  • Tutoriel Oracle Java :

    • [L'exigence de capture ou de spécification](https://docs.oracle.com/javase/tutorial/essential/exceptions/catchexceptions.html#:~:text=L'exigence de capture ou de spécification)
    • [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 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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal