Gestion des exceptions dans Java

Qu'est-ce que l'exception dans Java?

Exception dans Java est un รฉvรฉnement qui interrompt l'exรฉcution des instructions du programme et perturbe le flux normal de l'exรฉcution du programme. Il s'agit d'un objet qui encapsule les informations d'un รฉvรฉnement d'erreur survenu dans une mรฉthode et qui est transmis au systรจme d'exรฉcution. Dans Java, les exceptions sont principalement utilisรฉes pour indiquer diffรฉrents types de conditions d'erreur.

Il existe deux types d'erreurs :

  1. Erreurs de temps de compilation
  2. Erreurs d'exรฉcution

Les erreurs de compilation peuvent ร  nouveau รชtre classรฉes en deux types :

  • Erreurs de syntaxe
  • Erreurs sรฉmantiques

Exemple d'erreurs de syntaxe :

Au lieu de dรฉclarer int a; vous l'avez dรฉclarรฉ par erreur comme in a; pour lequel le compilateur gรฉnรฉrera une erreur.

Exemple : Vous avez dรฉclarรฉ une variable int a; et aprรจs quelques lignes de code, vous dรฉclarez ร  nouveau un entier comme int a;Toutes ces erreurs sont mises en รฉvidence lorsque vous compilez le code.

Exemple d'erreurs d'exรฉcution

Une erreur d'exรฉcution est appelรฉe un Exceptions erreur. Il s'agit de tout รฉvรฉnement qui interrompt le dรฉroulement normal de l'exรฉcution du programme. Les exemples d'exceptions sont les exceptions arithmรฉtiques, les exceptions Nullpointer, les exceptions Divide by zero, etc. Les exceptions dans Java sont quelque chose qui รฉchappe au contrรดle des dรฉveloppeurs.

Cliquez ร  nouveau sur ici si la vidรฉo n'est pas accessible

Pourquoi avons-nous besoin dโ€™une exception ?

Supposons que vous ayez codรฉ un programme pour accรฉder au serveur. Les choses ont bien fonctionnรฉ pendant que vous dรฉveloppiez le code.

Java Gestion des exceptions

Pendant la production rรฉelle, le serveur est en panne. Lorsque votre programme tente d'y accรฉder, une exception est levรฉe.

Java Gestion des exceptions

Comment gรฉrer les exceptions

Jusqu'ร  prรฉsent, nous l'avons vu, les exceptions รฉchappent au contrรดle du dรฉveloppeur. Mais imputer lโ€™รฉchec de votre code aux problรจmes environnementaux nโ€™est pas une solution. Vous avez besoin dโ€™une programmation robuste, qui prend en charge les situations exceptionnelles. Un tel code est connu sous le nom de Gestionnaire d'exceptions.

Dans notre exemple, une bonne gestion des exceptions consisterait, lorsque le serveur est en panne, ร  se connecter au serveur de sauvegarde.

Java Gestion des exceptions

Pour mettre cela en ล“uvre, entrez votre code pour vous connecter au serveur (en utilisant les conditions traditionnelles if et else). Vous vรฉrifierez si le serveur est en panne. Si oui, รฉcrivez le code pour vous connecter au serveur de sauvegarde. Une telle organisation du code, utilisant des boucles ยซ if ยป et ยซ else ยป, nโ€™est pas efficace lorsque votre code comporte plusieurs exceptions Java gรฉrer.

class connect{
	if(Server Up){
	 // code to connect to server
	}
	else{
	 // code to connect to BACKUP server
	}
}

Essayez le bloc Catch

Java offre une maniabilitรฉ exceptionnelle intรฉgrรฉe.

  1. Le code normal entre dans un TRY bloque.
  2. Le code de gestion des exceptions va dans le CAPTURE bloc

Essayez le bloc Catch

Dans notre exemple, le bloc TRY contiendra le code de connexion au serveur. Le bloc CATCH contiendra le code de connexion au serveur de secours. Si le serveur est opรฉrationnel, le code du bloc CATCH sera ignorรฉ. Si le serveur est en panne, une exception est levรฉe et le code du bloc catch sera exรฉcutรฉ.

Essayez le bloc Catch

Voici donc comment l'exception est gรฉrรฉe dans Java.

Syntaxe d'utilisation de try & catch

try{
    statement(s)
}
catch (exceptiontype name){
	statement(s)
}

Exemple

ร‰tape 1) Copiez le code suivant dans un รฉditeur

class JavaException {
   public static void main(String args[]){
      int d = 0;
      int n = 20;
      int fraction = n/d;
     System.out.println("End Of Main");
   }
}

ร‰tape 2) Enregistrez le fichier et compilez le code. Exรฉcutez le programme ร  l'aide de la commande java JavaException

ร‰tape 3) Une exception arithmรฉtique โ€“ la division par zรฉro est affichรฉe comme ci-dessous pour la ligne nยฐ 5 et la ligne nยฐ 6 n'est jamais exรฉcutรฉe

ร‰tape 4) Voyons maintenant comment try and catch nous aidera ร  gรฉrer cette exception. Nous mettrons l'exception provoquant la ligne de code dans un Essai bloc, suivi d'un capture bloc. Copiez le code suivant dans l'รฉditeur.

class JavaException {
 public static void main(String args[]) {
  int d = 0;
  int n = 20;
  try {
   int fraction = n / d;
   System.out.println("This line will not be Executed");
  } catch (ArithmeticException e) {
   System.out.println("In the catch Block due to Exception = " + e);
  }
  System.out.println("End Of Main");
 }
}

ร‰tape 5) Enregistrez, compilez et exรฉcutez le code. Vous obtiendrez le rรฉsultat suivant

Essayez le bloc Catch

Comme vous le constatez, l'exception est gรฉrรฉe et la derniรจre ligne de code est รฉgalement exรฉcutรฉe. Notez รฉgalement que la ligne nยฐ7 ne sera pas exรฉcutรฉe car dรจs qu'une exception est levรฉe, le flux de contrรดle passe au bloc catch.

ร€ noter: L'objet AritmeticException ยซ e ยป contient des informations sur l'exception qui s'est produite, ce qui peut รชtre utile pour prendre des mesures de rรฉcupรฉration.

Java Hiรฉrarchie des classes d'exception

Aprรจs l'exรฉcution d'une instruction catch, les autres sont contournรฉes et l'exรฉcution continue aprรจs le bloc try/catch. Les blocs catch imbriquรฉs suivent la hiรฉrarchie des exceptions.


Java Hiรฉrarchie des exceptions

  • Toutes les classes d'exception dans Java รฉtendre la classe 'Throwable'. Throwable a deux sous-classes, Error et Exception
  • La classe Error dรฉfinit l'exception ou les problรจmes qui ne devraient pas se produire dans des circonstances normales par notre programme, par exemple erreur de mรฉmoire, erreur matรฉrielle, erreur JVM, etc.
  • La classe Exception reprรฉsente les exceptions qui peuvent รชtre gรฉrรฉes par notre programme, et notre programme peut รชtre rรฉcupรฉrรฉ ร  partir de cette exception en utilisant le bloc try and catch
  • Une exception d'exรฉcution est une sous-classe de la classe d'exception. L'exception de ce type reprรฉsente une exception qui se produit au moment de l'exรฉcution et qui ne peut pas รชtre suivie au moment de la compilation. Un excellent exemple de ce type est l'exception de division par zรฉro, l'exception de pointeur nul, etc.
  • Une exception IO est gรฉnรฉrรฉe lors des opรฉrations d'entrรฉe et de sortie
  • Exceptions interrompues dans Java, est gรฉnรฉrรฉ lors de plusieurs threads.

Exemple : Pour comprendre l'imbrication des blocs try and catch

ร‰tape 1) Copiez le code suivant dans un รฉditeur.

class JavaException {
 public static void main(String args[]) {
  try {
   int d = 1;
   int n = 20;
   int fraction = n / d;
   int g[] = {
    1
   };
   g[20] = 100;
  }
  /*catch(Exception e){
  	System.out.println("In the catch block due to Exception = "+e);
  }*/
  catch (ArithmeticException e) {
   System.out.println("In the catch block due to Exception = " + e);
  } catch (ArrayIndexOutOfBoundsException e) {
   System.out.println("In the catch block due to Exception = " + e);
  }
  System.out.println("End Of Main");
 }
}

ร‰tape 2) Enregistrez le fichier et compilez le code. Exรฉcutez le programme ร  l'aide de la commande, Java JavaException.

ร‰tape 3) Une ArrayIndexOutOfBoundsException est gรฉnรฉrรฉe. Modifiez la valeur de int d ร  0. Enregistrez, compilez et exรฉcutez le code.

ร‰tape 4) Une ArithmeticException doit รชtre gรฉnรฉrรฉe.

ร‰tape 5) Dรฉcommentez la ligne nยฐ10 en ligne nยฐ12. Enregistrez, compilez et exรฉcutez le code.

ร‰tape 6) Erreur de compilation? En effet, Exception est la classe de base dโ€™ArithmeticException Exception. Toute exception dรฉclenchรฉe par ArithmeticException peut รฉgalement รชtre gรฉrรฉe par la classe Exception. Ainsi, le bloc catch d'ArithmeticException n'aura jamais la chance d'รชtre exรฉcutรฉ, ce qui le rend redondant. D'oรน l'erreur de compilation.

Java Enfin bloquer

Le bloc final est exรฉcutรฉ indรฉpendamment de la levรฉe dโ€™une exception dans le bloc try. C'est facultatif ร  utiliser avec un bloc try.

 try {
  statement(s)
 } catch (ExceptiontType name) {

  statement(s)

 } finally {

  statement(s)

 }

Dans le cas oรน une exception est dรฉclenchรฉe dans le bloc try, le bloc final est exรฉcutรฉ aprรจs l'exรฉcution du bloc catch.

Exemple

ร‰tape 1) Copiez le code suivant dans un รฉditeur.

class JavaException {
   public static void main(String args[]){
    try{
       int d = 0;
       int n =20;
       int fraction = n/d;
    }
  catch(ArithmeticException e){
    System.out.println("In the catch block due to Exception = "+e);
  }
  finally{
	System.out.println("Inside the finally block");
  }
}
}

ร‰tape 2) Enregistrez, compilez et exรฉcutez le code.

ร‰tape 3) Production attendue. Enfin, le bloc est exรฉcutรฉ mรชme si une exception est levรฉe.

ร‰tape 4) Modifiez la valeur de la variable d = 1. Enregistrez, compilez et exรฉcutez le code et observez le rรฉsultat.Bas du formulaire

Rรฉsumรฉ

  • An L'exception est une erreur d'exรฉcution qui interrompt le flux normal de lโ€™exรฉcution du programme. Une perturbation pendant lโ€™exรฉcution du programme est appelรฉe erreur ou exception.
  • Les erreurs sont classรฉes en deux catรฉgories
    • Erreurs de compilation โ€“ Erreurs de syntaxe, erreurs sรฉmantiques
    • Erreurs d'exรฉcution - Exception
  • A un programme robuste devrait gรฉrer toutes les exceptions et continuer son flux normal d'exรฉcution du programme. Java fournit une mรฉthode de manipulation exceptionnelle intรฉgrรฉe
  • Le gestionnaire d'exceptions est un ensemble de codes qui gรจre une exception. Les exceptions peuvent รชtre traitรฉes dans Java en utilisant try & catch.
  • Essayez de bloquer: Le code normal va sur ce bloc.
  • Bloc de capture: S'il y a une erreur dans le code normal, alors il ira dans ce bloc

Rรฉsumez cet article avec :