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.


Exemples d'exceptions:
Vérifié Décoché
IOException NullPointerException
ClassNotFoundException Exception d'argument illégal
InterruptedException IllegalStateException

Méthode One of Two:
Utiliser Try-Catch-Finally

  1. 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. 2 Déclarez trois variables entières primitives et effectuez la division. Déclarer trois int (entier primitif) variables et nommez-les dividende, diviseur et quotient. Attribuer un nombre arbitraire à dividende variable, attribuer zéro à diviseur variable et attribuer un quotient de dividende et diviseur à quotient variable. Impression quotient 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. 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. 4 Catch and handle exception. Attribuer un numéro zéro à la quotient variable et créer un bloc try-catch avec ArithmétiqueException dans le capture déclaration. À l'intérieur de essayer bloquer, diviser dividende et diviseur variables et attribuer leur quotient à la quotient variable. À l'intérieur de capture bloc, affiche la trace de la pile d’exceptions sur la console. Après le bloc try-catch, imprimez le quotient 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. 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. 6 Ajouter enfin bloc. enfin les blocs sont toujours exécutés après le essayer et / ou capture blocs et ils sont principalement utilisés pour libérer les ressources. Au lieu d’après le bloc try-catch-finally, imprimez le quotient variable à la console à l'intérieur du enfin 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. 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. 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. 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. 3 Ajouter une ressource à la essayer et exception à la capture déclaration. Instancier FileReader et Fichier comme paramètre dans le essayer déclaration. dans le capture déclaration, ajouter IOException 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. 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();