Il y a beaucoup de concepts différents à apprendre lors de l'apprentissage d'un langage de programmation. Beaucoup de ces concepts sont comme la grammaire dans les langues parlées - ils aident à garder la structure et le fonctionnement corrects. La gestion des exceptions en Java est une compétence importante pour devenir un bon programmeur Java.
Des exceptions sont émises lorsque le programme a rencontré une erreur. Une fois l'exception levée, il appartient au programmeur de décider de ce qui va se passer ensuite. Le plus commun et le pire traitement d'une exception l'ignore en silence. L'impression de la pile sur la console doit au moins être effectuée de manière à faciliter l'identification d'une erreur.
Exceptions vérifiées et non vérifiées
Les exceptions vérifiées sont des classes dérivées de Exception
classe et sont lancés lorsque le programme peut récupérer de l'exception et ils doivent soit être pris en utilisant l'un des essayer
blocs ou relance. Les exceptions non vérifiées sont des classes dérivées de RuntimeException
et sont lancés lorsque le programme ne peut pas récupérer de l'exception et qu'il n'est pas nécessaire de les récupérer ou de les relancer. Généralement, les exceptions non vérifiées résultent d'une erreur de programmation et peuvent être évitées (par exemple, vérifier si une variable est nulle pour empêcher NullPointerException
).
Étant donné que les exceptions non vérifiées produisent un code plus propre, les programmeurs privilégient les exceptions vérifiées et, de nos jours, cela se résume à un choix personnel. Cependant, les exceptions dans l'API Java sont conformes.
Vérifié | Décoché |
---|---|
IOException | NullPointerException |
ClassNotFoundException | Exception d'argument illégal |
InterruptedException | IllegalStateException |
Méthode One of Two:
Utiliser Try-Catch-Finally
-
1 Créez une classe et la méthode principale. Créez une classe et nommez-la comme vous le souhaitez et à l'intérieur de la classe, créez la méthode principale.
Publique classe HandleExceptionExemple Publique statique vide principale(Chaîne[] args)
-
2 Déclarez trois variables entières primitives et effectuez la division. Déclarer trois
int
(entier primitif) variables et nommez-lesdividende
,diviseur
etquotient
. Attribuer un nombre arbitraire àdividende
variable, attribuer zéro àdiviseur
variable et attribuer un quotient dedividende
etdiviseur
àquotient
variable. Impressionquotient
variable à la console.Publique classe HandleExceptionExemple Publique statique vide principale(Chaîne[] args) int dividende = 50; int diviseur = 0; int quotient = dividende / diviseur; Système.en dehors.imprimer(quotient);
-
3 Compile et éxecute le programe. Le programme imprime la trace de la pile d’exceptions sur la console et met fin à l’exécution à la ligne où
quotient
une variable est affectée à une valeur.Quotient
La variable ne sera jamais imprimée sur la console car les exceptions non capturées, sur la ligne sur laquelle elles ont été lancées, sont supprimées de la méthode.Exception en fil "principale" Java.lang.ArithmétiqueException: / par zéro à HandleExceptionExample.principale(HandleExceptionExemple.Java:5) au soleilréfléchir.NativeMethodAccessorImpl.invoquer0(Originaire de Méthode) au soleilréfléchir.NativeMethodAccessorImpl.invoquer(NativeMethodAccessorImpl.Java:62) au soleilréfléchir.DélégationMéthodeAccessorImpl.invoquer(DelegatingMethodAccessorImpl.Java:43) à java.lang.réfléchir.Méthode.invoquer(Méthode.Java:498) au com.intellij.rt.exécution.application.AppMain.principale(AppMain.Java:147)
-
4 Catch and handle exception. Attribuer un numéro zéro à la
quotient
variable et créer un bloc try-catch avecArithmétiqueException
dans lecapture
déclaration. À l'intérieur deessayer
bloquer, diviserdividende
etdiviseur
variables et attribuer leur quotient à laquotient
variable. À l'intérieur decapture
bloc, affiche la trace de la pile d’exceptions sur la console. Après le bloc try-catch, imprimez lequotient
variable à la console.Publique classe HandleExceptionExemple Publique statique vide principale(Chaîne[] args) int dividende = 50; int diviseur = 0; int quotient = 0; essayer quotient = dividende / diviseur; capture (ArithmétiqueException e) e.printStackTrace(); Système.en dehors.imprimer(quotient);
-
5 Compile et éxecute le programe. Le programme imprime la trace de la pile des exceptions sur la console, mais ne termine pas l'exécution à la ligne où
quotient
une variable est affectée à une valeur.Quotient
La variable est également imprimée sur la console, mais avant l'exception.0 Java.lang.ArithmétiqueException: / par zéro à HandleExceptionExample.principale(HandleExceptionExemple.Java:7) au soleilréfléchir.NativeMethodAccessorImpl.invoquer0(Originaire de Méthode) au soleilréfléchir.NativeMethodAccessorImpl.invoquer(NativeMethodAccessorImpl.Java:62) au soleilréfléchir.DélégationMéthodeAccessorImpl.invoquer(DelegatingMethodAccessorImpl.Java:43) à java.lang.réfléchir.Méthode.invoquer(Méthode.Java:498) au com.intellij.rt.exécution.application.AppMain.principale(AppMain.Java:147)
-
6 Ajouter
enfin
bloc.enfin
les blocs sont toujours exécutés après leessayer
et / oucapture
blocs et ils sont principalement utilisés pour libérer les ressources. Au lieu d’après le bloc try-catch-finally, imprimez lequotient
variable à la console à l'intérieur duenfin
bloc.Publique classe HandleExceptionExemple Publique statique vide principale(Chaîne[] args) int dividende = 50; int diviseur = 0; int quotient = 0; essayer quotient = dividende / diviseur; capture (ArithmétiqueException e) e.printStackTrace(); enfin Système.en dehors.imprimer(quotient);
-
7 Compile et éxecute le programe. Le programme imprime la trace de la pile des exceptions et
quotient
variable juste après, à la console.Java.lang.ArithmétiqueException: / par zéro à HandleExceptionExample.principale(HandleExceptionExemple.Java:11) au soleilréfléchir.NativeMethodAccessorImpl.invoquer0(Originaire de Méthode) au soleilréfléchir.NativeMethodAccessorImpl.invoquer(NativeMethodAccessorImpl.Java:62) au soleilréfléchir.DélégationMéthodeAccessorImpl.invoquer(DelegatingMethodAccessorImpl.Java:43) à java.lang.réfléchir.Méthode.invoquer(Méthode.Java:498) au com.intellij.rt.exécution.application.AppMain.principale(AppMain.Java:147) 0
Méthode deux sur deux:
Utiliser Try-With-Resources
-
1 Créez une classe et la méthode principale. Créez une classe et nommez-la comme vous le souhaitez et à l'intérieur de la classe, créez la méthode principale.
Publique classe HandleExceptionExemple Publique statique vide principale(Chaîne[] args)
-
2 Créer un bloc try-catch. Créez un bloc try-catch et ajoutez des parenthèses au
essayer
déclaration.Publique classe HandleExceptionExemple Publique statique vide principale(Chaîne[] args) essayer () capture ()
-
3 Ajouter une ressource à la
essayer
et exception à lacapture
déclaration. InstancierFileReader
etFichier
comme paramètre dans leessayer
déclaration. dans lecapture
déclaration, ajouterIOException
et à l'intérieur du bloc, imprimez la trace de la pile sur la console.Publique classe HandleExceptionExemple Publique statique vide principale(Chaîne[] args) essayer (FileReader lecteur = Nouveau FileReader(Nouveau Fichier("nom de fichier"))) // code omis capture (IOException e) e.printStackTrace();
-
4 Fini. L'utilisation de try-with-resources libère automatiquement les ressources dans le système d'exploitation. Pensez-y comme un automatique
enfin
bloc. Si une exception est levée lors de la lecture du fichier,reader.close ()
sera automatiquement appelé.- L'équivalent en utilisant try-catch-finally:
FileReader lecteur = nul; essayer lecteur = Nouveau FileReader(Nouveau Fichier("nom de fichier")); // code omis capture (IOException e) e.printStackTrace(); enfin si (lecteur != nul) essayer lecteur.Fermer(); capture (IOException e) e.printStackTrace();
- L'équivalent en utilisant try-catch-finally: