Gestion des exceptions dans Java
โก Rรฉsumรฉ intelligent
Java La gestion des exceptions fournit un mรฉcanisme structurรฉ pour gรฉrer les erreurs d'exรฉcution qui perturbent le dรฉroulement normal du programme. Elle utilise les mots-clรฉs try, catch, finally, throw et throws pour dรฉtecter, isoler et gรฉrer les conditions exceptionnelles tout en maintenant le programme en marche.ping Des applications robustes et prรฉvisibles.

Qu'est-ce qu'une exception dans Java?
An Exception dans Java Une erreur est un รฉvรฉnement qui interrompt l'exรฉcution des instructions d'un programme et perturbe son dรฉroulement normal. Il s'agit d'un objet qui encapsule les informations relatives ร un รฉvรฉnement d'erreur survenu au sein d'une mรฉthode et qui est transmis au systรจme d'exรฉcution. JavaLes exceptions sont principalement utilisรฉes pour signaler diffรฉrents types d'erreurs afin que les dรฉveloppeurs puissent y rรฉpondre de maniรจre contrรดlรฉe.
Il existe deux grandes catรฉgories d'erreurs dans Java:
- Erreurs de temps de compilation
- Erreurs d'exรฉcution
Les erreurs de compilation peuvent รชtre classรฉes en deux autres 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 d'erreur sรฉmantique : 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 une ExceptionUne exception est tout รฉvรฉnement qui interrompt le dรฉroulement normal de l'exรฉcution d'un programme. Parmi les exemples d'exceptions, on peut citer les exceptions arithmรฉtiques, les exceptions de pointeur nul, les exceptions de division par zรฉro, et bien d'autres. Java ce sont des conditions qui รฉchappent souvent au contrรดle direct du dรฉveloppeur.
Cliquez ร nouveau ici si la vidรฉo n'est pas accessible
Pourquoi avons-nous besoin de la gestion des exceptions ?
Supposons que vous ayez codรฉ un programme pour accรฉder ร un serveur. Tout fonctionne correctement pendant la phase de dรฉveloppement.ping le code dans un environnement local aux conditions contrรดlรฉes.
Lors d'une exรฉcution en production, le serveur peut รชtre indisponible. Lorsque votre programme tente d'y accรฉder, une exception est levรฉe et, sans gestion appropriรฉe, le programme s'arrรชte brutalement.
Comment gรฉrer une exception dans Java
Nous avons vu jusqu'ici qu'une exception est souvent hors du contrรดle du dรฉveloppeur. Cependant, imputer les dรฉfaillances du code ร des problรจmes environnementaux n'est pas une solution viable. Il est nรฉcessaire de programmer de maniรจre robuste afin de gรฉrer les situations exceptionnelles. Ce type de code est appelรฉ un gestionnaire d'exceptions. Gestionnaire d'exceptions.
Dans notre exemple, une bonne gestion des exceptions impliquerait que, lorsque le serveur principal est hors service, le programme se connecte automatiquement ร un serveur de secours.
Pour ce faire, vous pourriez รฉcrire du code pour vous connecter au serveur en utilisant des conditions ยซ si ยป et ยซ sinon ยป classiques. Vous vรฉrifierez si le serveur est hors service et, le cas รฉchรฉant, vous รฉcrirez du code pour vous connecter au serveur de secours. Cependant, cette organisation du code ร l'aide de branches ยซ si ยป et ยซ sinon ยป n'est pas efficace lorsque votre code comporte plusieursโฆ Java exceptions gรฉrer.
class connect{ if(Server Up){ // code to connect to server } else{ // code to connect to BACKUP server } }
Bloc Try Catch dans Java
Java fournit un mรฉcanisme intรฉgrรฉ de gestion des exceptions qui sรฉpare la logique normale de la logique de rรฉcupรฉration des erreurs.
- Le code normal entre dans un TRY bloque.
- Le code de gestion des exceptions va dans le CAPTURE bloque.
Dans notre exemple, le bloc TRY contient le code permettant de se connecter au serveur principal. Le bloc CATCH contient le code permettant de se connecter au serveur de secours. Si le serveur principal est opรฉrationnel, le code du bloc CATCH est ignorรฉ. Si le serveur principal est hors service, une exception est levรฉe et le code du bloc CATCH est exรฉcutรฉ.
Voici donc comment une exception est gรฉrรฉe dans Java.
Syntaxe pour l'utilisation de try et catch
try{ statement(s) } catch (exceptiontype name){ statement(s) }
Exemple de bloc try-catch
ร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, division par zรฉro, est affichรฉe pour la ligne 5, et la ligne 6 n'est jamais exรฉcutรฉe.
รtape 4) Examinons maintenant comment les blocs try et catch nous aideront ร gรฉrer cette exception. Nous placerons la ligne de code ร l'origine de l'exception dans un bloc try/catch. 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 pouvez le constater, l'exception est gรฉrรฉe et la derniรจre ligne de code est exรฉcutรฉe. Notez รฉgalement que la ligne 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 ArithmeticException ยซ e ยป contient des informations sur l'exception qui s'est produite, ce qui peut รชtre utile lors de la mise en ลuvre d'actions de rรฉcupรฉration.
Java Hiรฉrarchie des classes d'exception
Une fois qu'une instruction catch est exรฉcutรฉe, les autres sont ignorรฉes et l'exรฉcution se poursuit aprรจs le bloc try-catch. Les blocs catch imbriquรฉs doivent respecter la hiรฉrarchie des exceptions, de la sous-classe la plus spรฉcifique ร la classe parente la plus gรฉnรฉrale.
- Toutes les classes d'exception dans Java รtendez la classe Throwable. Throwable possรจde deux sous-classes : Error et Exception.
- La classe Error dรฉfinit les exceptions ou les problรจmes qui ne sont pas censรฉs se produire dans des circonstances normales dans votre programme, par exemple une erreur de mรฉmoire, une erreur matรฉrielle ou une erreur JVM.
- La classe Exception reprรฉsente les exceptions qui peuvent รชtre gรฉrรฉes par votre programme, et votre programme peut se remettre de ces exceptions en utilisant les blocs try et catch.
- Une RuntimeException est une sous-classe de la classe Exception. Les exceptions de ce type reprรฉsentent des exceptions non vรฉrifiรฉes qui surviennent ร l'exรฉcution et ne peuvent รชtre dรฉtectรฉes ร la compilation. L'exception de division par zรฉro et l'exception de pointeur nul en sont de bons exemples.
- Une exception IOException est gรฉnรฉrรฉe lors des opรฉrations d'entrรฉe/sortie.
- Exception interrompue dans Java est gรฉnรฉrรฉ lors d'opรฉrations multithreadรฉes lorsqu'un thread est interrompu.
Exemple : Imbrication de blocs try et 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 exception ArrayIndexOutOfBoundsException est gรฉnรฉrรฉe. Modifiez la valeur de l'entier d ร 0. Enregistrez, compilez et exรฉcutez le code.
รtape 4) Une exception ArithmeticException doit รชtre gรฉnรฉrรฉe.
รtape 5) Dรฉcommentez les lignes 10 ร 12. Enregistrez, compilez et exรฉcutez le code.
รtape 6) Erreur de compilation ? En effet, Exception est la classe de base d'ArithmeticException. Toute exception levรฉe par ArithmeticException peut รฉgalement รชtre gรฉrรฉe par la classe Exception. Par consรฉquent, le bloc catch d'ArithmeticException ne sera jamais exรฉcutรฉ, ce qui le rend inutile. 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. Le bloc finally est l'endroit idรฉal pour libรฉrer les ressources telles que les connexions ร la base de donnรฉes, les fichiers ou les sockets rรฉseau.
try { statement(s) } catch (ExceptiontType name) { statement(s) } finally { statement(s) }
Si une exception est levรฉe dans le bloc try, le bloc finally est exรฉcutรฉ une fois le bloc catch terminรฉ.
Exemple de bloc finally
ร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) Rรฉsultat attendu : Le bloc finally 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, puis observez le rรฉsultat.
Meilleures pratiques pour Java Gestion des exceptions
Le respect de quelques rรจgles รฉprouvรฉes vous aidera ร conserver votre Java Un code robuste, lisible et facile ร dรฉboguer :
- Interceptez d'abord les exceptions les plus spรฉcifiques, puis les plus gรฉnรฉrales, afin de prรฉserver l'intรฉgritรฉ de la hiรฉrarchie des exceptions.
- รvitez les blocs catch vides. ร minima, consignez l'exception afin de ne jamais perdre la trace de sa cause premiรจre.
- Utilisez le bloc finally ou try avec les ressources pour libรฉrer les fichiers, les sockets et les connexions ร la base de donnรฉes.
- Nโutilisez les exceptions vรฉrifiรฉes que lorsque lโappelant peut raisonnablement rรฉcupรฉrer, et les exceptions non vรฉrifiรฉes pour les erreurs de programmation.
- Encapsulez les exceptions de bas niveau dans une exception mรฉtier significative pour maintenir la cohรฉrence de l'API.tracc'est propre.
- Ne jamais ignorer silencieusement une InterruptedException dans du code multithread, restaurer plutรดt l'indicateur d'interruption.







