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 :
- Erreurs de temps de compilation
- 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.
Pendant la production rรฉelle, le serveur est en panne. Lorsque votre programme tente d'y accรฉder, une exception est levรฉe.
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.
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.
- Le code normal entre dans un TRY bloque.
- Le code de gestion des exceptions va dans le CAPTURE bloc
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รฉ.
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
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.
- 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







