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
Mary-Kate Olsenoriginal
2024-12-23 08:24:13360parcourir

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
}
  • 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
}

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:
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