0% ont trouvé ce document utile (0 vote)
1 vues5 pages

Les Exceptions en Java

Le document traite des exceptions en programmation, en particulier en Java, expliquant leur nature et leur gestion. Il illustre des exemples d'exceptions courantes comme ArrayIndexOutOfBoundsException et NullPointerException, ainsi que la manière de les capturer et de les traiter à l'aide de blocs try-catch. Les exemples de code démontrent comment les exceptions peuvent interrompre le flux normal d'un programme et comment elles peuvent être gérées pour permettre la poursuite de l'exécution.

Transféré par

rahmaa.ben.slimane
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
1 vues5 pages

Les Exceptions en Java

Le document traite des exceptions en programmation, en particulier en Java, expliquant leur nature et leur gestion. Il illustre des exemples d'exceptions courantes comme ArrayIndexOutOfBoundsException et NullPointerException, ainsi que la manière de les capturer et de les traiter à l'aide de blocs try-catch. Les exemples de code démontrent comment les exceptions peuvent interrompre le flux normal d'un programme et comment elles peuvent être gérées pour permettre la poursuite de l'exécution.

Transféré par

rahmaa.ben.slimane
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

POO ISET BEJA 2023-2024

LES EXCEPTIONS
Une exception est un événement exceptionnel risquant de compromettre le bon déroulement du
programme. Un débordement de tableau ou de pile, la lecture d’une donnée erronée ou d’une
fin de fichier prématurée constituent des exemples d’exceptions. Lors de la détection d’une
anomalie, une fonction (en C par exemple) peut essayer de la traiter directement ; elle peut aussi
fournir des informations de retour (par l’intermédiaire d’une variable) indiquant le type de
l’anomalie et laissantnau programme appelant le soin de décider de la suite à donner à cette
anomalie.
En Java, la fonction peut lancer une exception en indiquant un type d’exception. L’exception
se "propage" de retour de méthode en retour de méthode jusqu’à ce qu’une méthode la traite.
Si aucune méthode ne la prend en compte, il y a un message d’erreur d’exécution. Suite à une
exception, toutes les instructions sont ignorées, sauf les instructions chargées de capter cette
exception.

Les exceptions de type RunTimeException

Exemple1 : les débordements de tableaux (dans main)


L’exécution du programme ci-dessus provoque un message d’erreur indiquant une exception
du type ArrayIndexOutOfBoundsException, et l’arrêt du programme. Le tableau de 4 entiers
tabEnt a des indices de 0 à 3. L’accès à la valeur d’indice 5 provoque une exception non captée.

// [Link]
public class TestException1 {
public static void main (String[] args) {
int tabEnt[] = { 1, 2, 3, 4 };
// Exception de type [Link]
// non controlee par le programme; erreur d’execution
tabEnt [4] = 0; // erreur et arret
[Link] ("Fin du main"); // le message n’apparait pas
} // main
} // class TestException1

Dans le programme suivant, la même erreur d’accès à un élément est captée par le programme. Lors de
la rencontre de l’erreur, les instructions en cours sont abandonnées et un bloc de traitement (catch) de
l’exception est recherché et exécuté. Le traitement se poursuit après ce bloc sauf indication contraire du
catch (return ou arrêt par exemple). Le message "Fin du main" est écrit après interception de l’exception.
public class TestException2 {
public static void main (String[] args) {
try {
int tabEnt[] = { 1, 2, 3, 4 };
// Exception de type ArrayIndexOutOfBoundsException

DR. BALKIS BETTOUMI 1


POO ISET BEJA 2023-2024

// controlee par le programme


tabEnt [4] = 0; // Exception et suite au catch
[Link] ("Fin du try"); // non executee
} catch (Exception e) {
[Link] ("Exception : " + e); // ecrit le message
}
[Link] ("Fin du main"); // executee
}
} // class TestException2
Exemples de résultats d’exécution :

Exemple2 : les débordements de tableaux (dans une méthode)


Ci-dessous, l’instruction tabEnt[4] provoque une exception dans la méthode init-Tableau().
L’instruction qui suit n’est pas prise en compte ; l’exception n’est pas traitée dans initTableau().
Les instructions qui suivent l’appel de initTableau() dans main() (le programme appelant) sont
ignorées également. Par contre, il existe un bloc catch qui traite l’exception. Le message "Fin
de main" est lui pris en compte après le traitement de l’exception.
// [Link] Exception lancee dans initTableau,
// captee dans main()
class TestException3 {
int[] tabEnt = new int[4];
void initTableau () {
tabEnt[0] = 1; tabEnt[1] = 2;
tabEnt[2] = 3; tabEnt[3] = 4;
tabEnt[4] = 5; // l’exception se produit ici; non captee
[Link]("Fin de initTableau"); // non executee
}
void ecrireTableau () {
for (int i=0; i < [Link]; i++) {
[Link] (" " + i);
}
[Link]();
}
} // class TestException3
public class PPTestException3 {
public static void main (String[] args) {
try {
TestException3 te = new TestException3();

DR. BALKIS BETTOUMI 2


POO ISET BEJA 2023-2024

[Link](); // l’exception se produit dans initTableau


[Link](); // non executee
} catch (Exception e) { // exception captee ici
[Link] ("Exception : " + e); // executee
}
[Link] ("Fin de main"); // executee
} // main
} // class PPTestException3
Résultats d’exécution :

L’exception peut aussi être traitée dans initTableau() comme indiqué ci-dessous. Le programme
se poursuit normalement une fois le bloc catch exécuté (retour de initTableau(), appel de
ecrireTableau() et message de fin).

// [Link] Exception lancee par initTableau()


// captee par initTableau()
class TestException4 {
int[] tabEnt = new int[4];
void initTableau () {
try {
tabEnt[0] = 1; tabEnt[1] = 2;
tabEnt[2] = 3; tabEnt[3] = 4;
tabEnt[4] = 5; // l’exception se produit ici
} catch (Exception e) { // captee ici
[Link] ("Exception : " + e); // ecrit le message
}
[Link]("Fin de initTableau"); // executee
}
void ecrireTableau () {
for (int i=0; i < [Link]; i++) {
[Link] (" " + tabEnt[i]);
}
[Link]();
}
} // class TestException4
public class PPTestException4 {
public static void main (String[] args) {

DR. BALKIS BETTOUMI 3


POO ISET BEJA 2023-2024

TestException4 te = new TestException4();


[Link](); // l’exception a ete captee
[Link](); // executee
[Link] ("Fin de main"); // executee
} // main
} // class PPTestException4

Exemples de résultats d’exécution :

Autres exemples d’exceptions de type RunTimeException


Les deux instructions suivantes provoquent une exception de type NullPointerException. s1 est une
référence null sur un (futur) objet de type String. On ne peut pas accéder au troisième caractère de l’objet
String référencé par null, d’où l’exception.
String s1 = null; [Link] ([Link] (3));
Le programme suivant donne des exemples où une exception est lancée : chaîne à convertir en entier
ne contenant pas un entier (lecture erronée d’un entier par exemple), division par zéro, transtypage non
cohérent de deux objets de classes différentes, essai d’ouverture d’un fichier n’existant pas (voir
chapitre 7).
// [Link] differentes exceptions
import [Link].*;
public class TestException5 {
public static void main (String[] args) {
String s1 = null;
//exception NullPointerException ci-dessous
//[Link] ([Link](3));
// convertit la chaine "231" en un entier binaire
int n1 = [Link] ("231");
[Link] ("n1 : " + n1);
// exception car la chaine "231x" n’est pas un entier :
// exception NumberFormatException ci-dessous
//int n2 = [Link] ("231x");
//[Link] ("n2 : " + n2);
//int d = 0;
//int quotient = 17 / d; // exception de type ArithmeticException
//[Link] ("quotient : " + quotient);
//Object p = new Point(); // voir heritage, chapitre suivant

DR. BALKIS BETTOUMI 4


POO ISET BEJA 2023-2024

//Color coul = (Color) p; // exception ClassCastException :


// p n’est pas de la classe Color
[Link] ("Fin de main");
} // main
} // class TestException5

DR. BALKIS BETTOUMI 5

Vous aimerez peut-être aussi