SlideShare ist ein Scribd-Unternehmen logo
1 von 44
Downloaden Sie, um offline zu lesen
Les exceptions
Axel KAMALAK
Les exceptions
La notion d'exception est un mécanisme permettant au
développeur JAVA de traiter de manière efficace et simple le
problème de la gestion des erreurs lors de l'exécution d'un
programme.

Il s'agit d'un signal qui indique qu'un évènement anormal est
survenu dans un programme. La récupération de l'exception
permet au programme de s'exécuter.
Les exceptions

    Différentes causes sont à l’origine de ce problème :




L’utilisateur
Les exceptions

      Différentes causes sont à l’origine de ce problème :




L’utilisateur                 Le développeur
Les exceptions

Différentes causes sont à l’origine de ce problème :



                        L’utilisateur peut entrer des données
                        non autorisées.

                        Un chiffre au lieu d’un nombre, …
Les exceptions

Différentes causes sont à l’origine de ce problème :



                                Le développeur peut avoir oublié
                                de tester une condition
Les exceptions

Différentes causes sont à l’origine de ce problème :



                                Le développeur peut avoir oublié
                                de tester une condition
Les exceptions

Différentes causes sont à l’origine de ce problème :



                                Si le développeur écrit trop de test,
                                le code devient vite illisible.
Les exceptions

Différentes causes sont à l’origine de ce problème :



                                Si le développeur écrit trop de test,
                                le code devient vite illisible.




Pour répondre à ce besoin, le langage JAVA propose la gestion des
évènements.
Les exceptions
     Soit le programme suivant :
package Exercice;

public class Exercice3 {

public static void main (String [] args)
{
int a = 5 ;
int b= 6 ;
int c =0 ;

int somme = a*b/c;

System.out.println(somme);

}}
Les exceptions
     Soit le programme suivant :
package Exercice;

public class Exercice3 {

public static void main (String [] args)
{
int a = 5 ;
int b= 6 ;
int c =0 ;

int somme = a*b/c;

System.out.println(somme);

}}
Les exceptions
package Exercice;

public class Exercice3 {

public static void main (String [] args)
{
int a = 5 ;
int b= 6 ;
int c =0 ;

int somme = a*b/c;

System.out.println(somme);

}}
Les exceptions
package Exercice;

public class Exercice3 {

public static void main (String [] args)
{
int a = 5 ;
int b= 6 ;
int c =0 ;                                 L’utilisateur peut entrer 0
int somme = a*b/c;

System.out.println(somme);

}}
Les exceptions
package Exercice;

public class Exercice3 {

public static void main (String [] args)
{
int a = 5 ;
int b= 6 ;
int c =0 ;                                 Génération d’erreur
int somme = a*b/c;

System.out.println(somme);
         Exception in thread "main" java.lang.ArithmeticException: / by zero
}}       at Exercice.Exercice3.main(Exercice3.java:11)
Les exceptions
     Nous pourrions résoudre ce problème à l’aide d’un
     test if – else.
package Exercice;

public class Exercice3 {

public static void main (String [] args)
{
int a = 5 ;                                Il faudrait tester que la variable c
int b= 6 ;                                          est différent de 0.
int c =0 ;

int somme = a*b/c;

System.out.println(somme);

}}
Les exceptions
     Nous pourrions résoudre ce problème à l’aide d’un
     test if – else.
package Exercice;

public class Exercice3 {

public static void main (String [] args)
{
int a = 5 ;                                Il faudrait tester que la variable c
int b= 6 ;                                          est différent de 0.
int c =0 ;
if(c!=0)
{
int somme = a*b/c;
System.out.println(somme);
}

}}
Les exceptions
     Nous pourrions résoudre ce problème à l’aide d’un
     test if – else.
package Exercice;

public class Exercice3 {

public static void main (String [] args)
{
int a = 5 ;                              Ce qui risque d’ alourdir le code et
int b= 6 ;                                 le code va vite devenir illisible.
int c =0 ;
if(c!=0)
{
int somme = a*b/c;
System.out.println(somme);
}

}}
Les exceptions
public class Exercice3 {
public static void main (String [] args)
{
int a = 5 ;
int b= 6 ;
int c = 0 ;


try{
int somme = a*b/c;


System.out.println(somme);
}
catch (ArithmeticException e)
{
System.out.println("Interdit de diviser par 0 !");


}
}
}
Les exceptions
public class Exercice3 {
public static void main (String [] args)
{
int a = 5 ;
int b= 6 ;
int c = 0 ;
                                                     Cette zone peut générer
try{                                                        une erreur
int somme = a*b/c;


System.out.println(somme);
}
catch (ArithmeticException e)
{
System.out.println("Interdit de diviser par 0 !");


}
}
}
Les exceptions
public class Exercice3 {
public static void main (String [] args)
{
int a = 5 ;
int b= 6 ;
int c = 0 ;


try{
int somme = a*b/c;


System.out.println(somme);
}
catch (ArithmeticException e)
{
System.out.println("Interdit de diviser par 0 !");


}
}}
Les exceptions
public class Exercice3 {
public static void main (String [] args)
{
int a = 5 ;
int b= 6 ;
int c = 0 ;
                                                     On va mettre le code
try{
                                                     susceptible de générer une
int somme = a*b/c;
                                                     erreur entre le bloc « try »
System.out.println(somme);
}
catch (ArithmeticException e)
{
System.out.println("Interdit de diviser par 0 !");


}
}}
Les exceptions
public class Exercice3 {
public static void main (String [] args)
{
int a = 5 ;
int b= 6 ;
int c = 0 ;
                                                     Dans le cas d’une exception,
try{
                                                     l’action à réaliser dans le bloc
int somme = a*b/c;
                                                     « catch »
System.out.println(somme);
}
catch (ArithmeticException e)
{
System.out.println("Interdit de diviser par 0 !");


}
}}
Les exceptions
public class Exercice3 {
public static void main (String [] args)
{
int a = 5 ;
                                                     Il est possible de prévoir
int b= 6 ;
                                                     1 ou plusieurs types d’actions
int c = 0 ;
                                                     à réaliser.
try{
int somme = a*b/c;


System.out.println(somme);
}
catch (ArithmeticException e)
{
System.out.println("Interdit de diviser par 0 !");


}
}}
Les exceptions
Syntaxe JAVA

try
{
..
}
catch (ClasseException1 variable)
{
…
}
catch (ClasseException2 variable)
{
…
}
Les exceptions
Syntaxe JAVA

try
{
Partie de code susceptible de générer une erreur
}
catch (ClasseException1 variable)
{

}
catch (ClasseException2 variable)
{
…
}
Les exceptions
Syntaxe JAVA

try
{
Partie de code susceptible de générer une erreur
}
catch (ClasseException1 variable)
{
Action à réaliser si le cas appartient à ClasseException1
}
catch (ClasseException2 variable)
{
…
}
Les exceptions
Syntaxe JAVA

try
{
Partie de code susceptible de générer une erreur
}
catch (ClasseException1 variable)
{
Action à réaliser si le cas appartient à ClasseException1
}
catch (ClasseException2 variable)
{
Action à réaliser si le cas appartient à ClasseException2
}
Les exceptions
Le bloc finally

Un bloc finally permet au programmeur de définir un
ensemble d'instructions qui est toujours exécuté, que
l'exception soit levée ou non, capturée ou non.


La seule instruction qui peut faire qu'un bloc finally
ne soit pas exécuté est System.exit().
Les exceptions
package Exercice;                 try{
                                  int somme = a*b/c;

public class Exercice3 {          System.out.println(somme);
public static void main           }
   (String [] args)               catch (ArithmeticException e)
                                  {
{                                 System.out.println("Interdit de diviser par 0 !");
int a = 5 ;
int b= 6 ;                        }
                                  finally
int c = 0 ;                       {
                                  System.out.println("Bloc Finally!");
                                  }
                                  }
                                  }




    Le bloc finally sera exécuté à la fin !
Les exceptions
  package Exercice;          try{
                             int somme = a*b/c;

  public class Exercice3 {   System.out.println(somme);
  public static void main    }
     (String [] args)        catch (ArithmeticException e)
                             {
  {                          System.out.println("Interdit de diviser par 0 !");
  int a = 5 ;
  int b= 6 ;                 }
                             finally
  int c = 0 ;                {
                             System.out.println("Bloc Finally!");
                             }
                             }
                             }


Le résultat d’affichage est :
Interdit de diviser par 0 !
Bloc Finally!
Les exceptions
Les erreurs les plus fréquentes :

 Division par zéro pour les entiers : ArithmeticException

 référence nulle : NullPointerException

 Type illégale : ClassCastException

 Tentative de création d'un tableau de taille négative : NegativeArraySizeException

 Dépassement de limite d'un tableau : ArrayIndexOutOfBoundsException

 Format non valable : NumberFormatException
Les exceptions
Les erreurs les plus fréquentes :

 Division par zéro pour les entiers : ArithmeticException

 référence nulle : NullPointerException

 Type illégale : ClassCastException

 Tentative de création d'un tableau de taille négative : NegativeArraySizeException

 Dépassement de limite d'un tableau : ArrayIndexOutOfBoundsException

 Format non valable : NumberFormatException




Et si nous voulons créer nos propres
             exceptions?
Les exceptions                                       package unpackage;

    package unpackage;                                       public class Passagers {
    public class Main {
    public static void main(String[] args) {                  void doNbPassager(int value) throws
    Passagers monTrain = new Passagers();                    MonExption
    try{                                                     {
    monTrain.doNbPassager(5);                                if(value < 0){
    monTrain.doNbPassager(7);                                throw new MonExption(value);
    monTrain.doNbPassager(8);                                }
    monTrain.doNbPassager(-12);                              else {
                                                             System.out.println("Nombre correct de passagers : "+value);
    }                                                        }
    catch(MonExption a){                                     }
    System.out.println ("Exception générée par : "+ a );
    }                                                        }
    }
    }



package unpackage;
public class MonExption extends Exception {
                                                                           Les exceptions
MonExption(int v)
{
                                                                           personnalisées.
System.out.println("Le nombre de passager ne peut pas être
négatif:"+ v);
}

}
Les exceptions                                         package unpackage;

    package unpackage;                                         public class Passagers {
    public class Main {
    public static void main(String[] args) {                    void doNbPassager(int value) throws
    Passagers monTrain = new Passagers();                      MonExption
    try{                                                       {
    monTrain.doNbPassager(5);                                  if(value < 0){
    monTrain.doNbPassager(7);                                  throw new MonExption(value);
    monTrain.doNbPassager(8);                                  }
    monTrain.doNbPassager(-12);                                else {
                                                               System.out.println("Nombre correct de passagers : "+value);
    }                                                          }
    catch(MonExption a){                                       }
    System.out.println ("Exception générée par : "+ a );
    }                                                          }
    }
    }



package unpackage;
public class MonExption extends Exception {                  Nous avons 3 classes
MonExption(int v)                                             Main ; Classe principale
{
System.out.println("Le nombre de passager ne peut pas être    Passagers : Classe passagers
négatif:"+ v);                                                MonException : Exception Personnalisée
}

}
Les exceptions                                       package unpackage;

    package unpackage;                                       public class Passagers {
    public class Main {
    public static void main(String[] args) {                  void doNbPassager(int value) throws
    Passagers monTrain = new Passagers();                    MonExption
    try{                                                     {
    monTrain.doNbPassager(5);                                if(value < 0){
    monTrain.doNbPassager(7);                                throw new MonExption(value);
    monTrain.doNbPassager(8);                                }
    monTrain.doNbPassager(-12);                              else {
                                                             System.out.println("Nombre correct de passagers : "+value);
    }                                                        }
    catch(MonExption a){                                     }
    System.out.println ("Exception générée par : "+ a );
    }                                                        }
    }
    }


                                                             Etudions un cas où une exception
package unpackage;
public class MonExption extends Exception {                  n’est pas générée.
MonExption(int v)                                            On appelle la méthode
{
System.out.println("Le nombre de passager ne peut pas être   « doNbPassager » avec
négatif:"+ v);                                               « 5 » comme argument.
}

}
Les exceptions                                       package unpackage;

    package unpackage;                                       public class Passagers {
    public class Main {
    public static void main(String[] args) {                  void doNbPassager(int value) throws
    Passagers monTrain = new Passagers();                    MonExption
    try{                                                     {
    monTrain.doNbPassager(5);                                if(value < 0){
    monTrain.doNbPassager(7);                                throw new MonExption(value);
    monTrain.doNbPassager(8);                                }
    monTrain.doNbPassager(-12);                              else {
                                                             System.out.println("Nombre correct de passagers : "+value);
    }                                                        }
    catch(MonExption a){                                     }
    System.out.println ("Exception générée par : "+ a );
    }                                                        }
    }
    }



package unpackage;
public class MonExption extends Exception {                      La condition n’est pas respectée.
MonExption(int v)
{
System.out.println("Le nombre de passager ne peut pas être
négatif:"+ v);
}

}
Les exceptions                                       package unpackage;

    package unpackage;                                       public class Passagers {
    public class Main {
    public static void main(String[] args) {                  void doNbPassager(int value) throws
    Passagers monTrain = new Passagers();                    MonExption
    try{                                                     {
    monTrain.doNbPassager(5);                                if(value < 0){
    monTrain.doNbPassager(7);                                throw new MonExption(value);
    monTrain.doNbPassager(8);                                }
    monTrain.doNbPassager(-12);                              else {
                                                             System.out.println("Nombre correct de passagers :
    }                                                        "+value);
    catch(MonExption a){                                     }
    System.out.println ("Exception générée par : "+ a );     }
    }
    }                                                        }
    }



package unpackage;
public class MonExption extends Exception {                      On exécute le contenu du bloc else
MonExption(int v)
{
System.out.println("Le nombre de passager ne peut pas être
négatif:"+ v);
}

}
Les exceptions                                         package unpackage;

    package unpackage;                                         public class Passagers {
    public class Main {
    public static void main(String[] args) {                    void doNbPassager(int value) throws
    Passagers monTrain = new Passagers();                      MonExption
    try{                                                       {
    monTrain.doNbPassager(5);                                  if(value < 0){
    monTrain.doNbPassager(7);                                  throw new MonExption(value);
    monTrain.doNbPassager(8);                                  }
    monTrain.doNbPassager(-12);                                else {
                                                               System.out.println("Nombre correct de passagers : "+value);
    }                                                          }
    catch(MonExption a){                                       }
    System.out.println ("Exception générée par : "+ a );
    }                                                          }
    }
    }



package unpackage;
public class MonExption extends Exception {                  Etudions un cas où une exception
MonExption(int v)
{                                                            va être levée.
System.out.println("Le nombre de passager ne peut pas être
négatif:"+ v);
}

}
Les exceptions                                         package unpackage;

    package unpackage;                                         public class Passagers {
    public class Main {
    public static void main(String[] args) {                    void doNbPassager(int value) throws
    Passagers monTrain = new Passagers();                      MonExption
    try{                                                       {
    monTrain.doNbPassager(5);                                  if(value < 0){
    monTrain.doNbPassager(7);                                  throw new MonExption(value);
    monTrain.doNbPassager(8);                                  }
    monTrain.doNbPassager(-12);                                else {
                                                               System.out.println("Nombre correct de passagers : "+value);
    }                                                          }
    catch(MonExption a){                                       }
    System.out.println ("Exception générée par : "+ a );
    }                                                          }
    }
    }



package unpackage;
public class MonExption extends Exception {                  On appelle la méthode doNbPassager
MonExption(int v)
{                                                            avec comme argument -12
System.out.println("Le nombre de passager ne peut pas être
négatif:"+ v);
}

}
Les exceptions                                         package unpackage;

    package unpackage;                                         public class Passagers {
    public class Main {
    public static void main(String[] args) {                    void doNbPassager(int value) throws
    Passagers monTrain = new Passagers();                      MonExption
    try{                                                       {
    monTrain.doNbPassager(5);                                  if(value < 0){
    monTrain.doNbPassager(7);                                  throw new MonExption(value);
    monTrain.doNbPassager(8);                                  }
    monTrain.doNbPassager(-12);                                else {
                                                               System.out.println("Nombre correct de passagers : "+value);
    }                                                          }
    catch(MonExption a){                                       }
    System.out.println ("Exception générée par : "+ a );
    }                                                          }
    }
    }



package unpackage;
public class MonExption extends Exception {                  La condition est respectée. -12 est un
MonExption(int v)
{                                                            nombre négatif.
System.out.println("Le nombre de passager ne peut pas être
négatif:"+ v);
}

}
Les exceptions                                         package unpackage;

    package unpackage;                                         public class Passagers {
    public class Main {
    public static void main(String[] args) {                    void doNbPassager(int value) throws
    Passagers monTrain = new Passagers();                      MonExption
    try{                                                       {
    monTrain.doNbPassager(5);                                  if(value < 0){
    monTrain.doNbPassager(7);                                  throw new MonExption(value);
    monTrain.doNbPassager(8);                                  }
    monTrain.doNbPassager(-12);                                else {
                                                               System.out.println("Nombre correct de passagers : "+value);
    }                                                          }
    catch(MonExption a){                                       }
    System.out.println ("Exception générée par : "+ a );
    }                                                          }
    }
    }



package unpackage;
public class MonExption extends Exception {                  On appelle l’exception
MonExption(int v)
{                                                            « MonException » par le biais du mot
System.out.println("Le nombre de passager ne peut pas être   clé throw.
négatif:"+ v);
}

}
Les exceptions                                         package unpackage;

    package unpackage;                                         public class Passagers {
    public class Main {
    public static void main(String[] args) {                    void doNbPassager(int value) throws
    Passagers monTrain = new Passagers();                      MonExption
    try{                                                       {
    monTrain.doNbPassager(5);                                  if(value < 0){
    monTrain.doNbPassager(7);                                  throw new MonExption(value);
    monTrain.doNbPassager(8);                                  }
    monTrain.doNbPassager(-12);                                else {
                                                               System.out.println("Nombre correct de passagers : "+value);
    }                                                          }
    catch(MonExption a){                                       }
    System.out.println ("Exception générée par : "+ a );
    }                                                          }
    }
    }



package unpackage;
public class MonExption extends Exception {                  Nous arrivons dans la méthode qui
MonExption(int v)
{                                                            permet d’exécuter un message
System.out.println("Le nombre de passager ne peut pas être   personnalisé en cas d’exception.
négatif:"+ v);
}

}
Les exceptions                                       package unpackage;

    package unpackage;                                       public class Passagers {
    public class Main {
    public static void main(String[] args) {                  void doNbPassager(int value) throws
    Passagers monTrain = new Passagers();                    MonExption
    try{                                                     {
    monTrain.doNbPassager(5);                                if(value < 0){
    monTrain.doNbPassager(7);                                throw new MonExption(value);
    monTrain.doNbPassager(8);                                }
    monTrain.doNbPassager(-12);                              else {
                                                             System.out.println("Nombre correct de passagers : "+value);
    }                                                        }
    catch(MonExption a){                                     }
    System.out.println ("Exception générée par : "+ a );
    }                                                        }
    }
    }



package unpackage;
public class MonExption extends Exception {                Nous affichons le message.
MonExption(int v)
{
System.out.println("Le nombre de passager ne peut
pas être négatif:"+ v);
}

}
Les exceptions                                          package unpackage;

    package unpackage;                                         public class Passagers {
    public class Main {
    public static void main(String[] args) {                    void doNbPassager(int value) throws
    Passagers monTrain = new Passagers();                      MonExption
    try{                                                       {
    monTrain.doNbPassager(5);                                  if(value < 0){
    monTrain.doNbPassager(7);                                  throw new MonExption(value);
    monTrain.doNbPassager(8);                                  }
    monTrain.doNbPassager(-12);                                else {
                                                               System.out.println("Nombre correct de passagers : "+value);
    }                                                          }
    catch(MonExption a){                                       }
    System.out.println ("Exception générée par :
    "+ a );                                                    }
    }
    }
    }


package unpackage;
public class MonExption extends Exception {                  Nous exécutons le message contenu
MonExption(int v)
{                                                            dans le bloc catch. Ce bloc s’exécutera
System.out.println("Le nombre de passager ne peut pas être   à chaque fois qu’une exception est
négatif:"+ v);
}                                                            attrapée.
}

Weitere ähnliche Inhalte

Was ist angesagt?

Cours java smi 2007 2008
Cours java smi 2007 2008Cours java smi 2007 2008
Cours java smi 2007 2008
Khalil Lechheb
 
Javascript un langage supérieur
Javascript un langage supérieurJavascript un langage supérieur
Javascript un langage supérieur
Fredy Fadel
 

Was ist angesagt? (19)

Améliorations dans Java depuis la version 5
Améliorations dans Java depuis la version 5Améliorations dans Java depuis la version 5
Améliorations dans Java depuis la version 5
 
Javascript Json artchitecture
Javascript  Json artchitecture Javascript  Json artchitecture
Javascript Json artchitecture
 
Cours java smi 2007 2008
Cours java smi 2007 2008Cours java smi 2007 2008
Cours java smi 2007 2008
 
JAVA Chapitre7
JAVA Chapitre7JAVA Chapitre7
JAVA Chapitre7
 
Fondamentaux java
Fondamentaux javaFondamentaux java
Fondamentaux java
 
Threads
ThreadsThreads
Threads
 
Chapitre 2: String en Java
Chapitre 2:  String en JavaChapitre 2:  String en Java
Chapitre 2: String en Java
 
Multithreading
MultithreadingMultithreading
Multithreading
 
Cours java avance avancé thread arraylist
Cours java avance avancé thread arraylistCours java avance avancé thread arraylist
Cours java avance avancé thread arraylist
 
Programmation des Threads en java
Programmation des Threads en javaProgrammation des Threads en java
Programmation des Threads en java
 
Chapitre 4 persistance des donnees
Chapitre 4  persistance des donneesChapitre 4  persistance des donnees
Chapitre 4 persistance des donnees
 
La programmation modulaire en Python
La programmation modulaire en PythonLa programmation modulaire en Python
La programmation modulaire en Python
 
Java - programmation concurrente
Java - programmation concurrenteJava - programmation concurrente
Java - programmation concurrente
 
JAVA Chapitre6
JAVA Chapitre6JAVA Chapitre6
JAVA Chapitre6
 
Chapitre8: Collections et Enumerations En Java
Chapitre8: Collections et Enumerations En JavaChapitre8: Collections et Enumerations En Java
Chapitre8: Collections et Enumerations En Java
 
Memento java
Memento javaMemento java
Memento java
 
Cours java script
Cours java scriptCours java script
Cours java script
 
Chap 03 poo en java partie2
Chap 03 poo en java partie2Chap 03 poo en java partie2
Chap 03 poo en java partie2
 
Javascript un langage supérieur
Javascript un langage supérieurJavascript un langage supérieur
Javascript un langage supérieur
 

Ähnlich wie Exceptions

BEBUTANT JAVA
BEBUTANT  JAVABEBUTANT  JAVA
BEBUTANT JAVA
violonjo
 
Cours c#
Cours c#Cours c#
Cours c#
zan
 
Javascript : que fait ce code?
Javascript : que fait ce code?Javascript : que fait ce code?
Javascript : que fait ce code?
Ruau Mickael
 

Ähnlich wie Exceptions (20)

POO Java Chapitre 6 Exceptions
POO Java  Chapitre 6 ExceptionsPOO Java  Chapitre 6 Exceptions
POO Java Chapitre 6 Exceptions
 
Chapitre 6 traitement des exceptions
Chapitre 6  traitement des exceptionsChapitre 6  traitement des exceptions
Chapitre 6 traitement des exceptions
 
Ch11
Ch11Ch11
Ch11
 
BEBUTANT JAVA
BEBUTANT  JAVABEBUTANT  JAVA
BEBUTANT JAVA
 
Cours de C++, en français, 2002 - Cours 2.4
Cours de C++, en français, 2002 - Cours 2.4Cours de C++, en français, 2002 - Cours 2.4
Cours de C++, en français, 2002 - Cours 2.4
 
Part1
Part1Part1
Part1
 
Java-3eme partie.pptx
Java-3eme partie.pptxJava-3eme partie.pptx
Java-3eme partie.pptx
 
Corrige tp java
Corrige tp javaCorrige tp java
Corrige tp java
 
C++ 11/14
C++ 11/14C++ 11/14
C++ 11/14
 
Java - Support etudiant - Tronc Commun Deuxième année ISIMA - 2018
Java - Support etudiant - Tronc Commun Deuxième année ISIMA - 2018Java - Support etudiant - Tronc Commun Deuxième année ISIMA - 2018
Java - Support etudiant - Tronc Commun Deuxième année ISIMA - 2018
 
Formation POO & Java (2ème séance)
Formation POO & Java (2ème séance)Formation POO & Java (2ème séance)
Formation POO & Java (2ème séance)
 
POO - Chapitre6.pptx
POO - Chapitre6.pptxPOO - Chapitre6.pptx
POO - Chapitre6.pptx
 
Cours c#
Cours c#Cours c#
Cours c#
 
Tests unitaires : Utilisation de la librairie CUnit
Tests unitaires : Utilisation de la librairie CUnitTests unitaires : Utilisation de la librairie CUnit
Tests unitaires : Utilisation de la librairie CUnit
 
Comment écrire du code testable ?
Comment écrire du code testable ?Comment écrire du code testable ?
Comment écrire du code testable ?
 
C# et .NET : Enigmes et puzzles
C# et .NET : Enigmes  et puzzlesC# et .NET : Enigmes  et puzzles
C# et .NET : Enigmes et puzzles
 
Memo java
Memo javaMemo java
Memo java
 
Javascript : que fait ce code?
Javascript : que fait ce code?Javascript : que fait ce code?
Javascript : que fait ce code?
 
POO-JAVA-partie3.pdf
POO-JAVA-partie3.pdfPOO-JAVA-partie3.pdf
POO-JAVA-partie3.pdf
 
Interception de signal avec dump de la pile d'appel
Interception de signal avec dump de la pile d'appelInterception de signal avec dump de la pile d'appel
Interception de signal avec dump de la pile d'appel
 

Mehr von Axel KAMALAK (6)

Administrer Salesforce
Administrer SalesforceAdministrer Salesforce
Administrer Salesforce
 
Master data Management
Master data ManagementMaster data Management
Master data Management
 
Programmation orientée objet et java
Programmation orientée objet et javaProgrammation orientée objet et java
Programmation orientée objet et java
 
Cours Java
Cours JavaCours Java
Cours Java
 
SWING
SWINGSWING
SWING
 
Les collections en JAVA
Les collections en JAVALes collections en JAVA
Les collections en JAVA
 

Exceptions

  • 2. Les exceptions La notion d'exception est un mécanisme permettant au développeur JAVA de traiter de manière efficace et simple le problème de la gestion des erreurs lors de l'exécution d'un programme. Il s'agit d'un signal qui indique qu'un évènement anormal est survenu dans un programme. La récupération de l'exception permet au programme de s'exécuter.
  • 3. Les exceptions Différentes causes sont à l’origine de ce problème : L’utilisateur
  • 4. Les exceptions Différentes causes sont à l’origine de ce problème : L’utilisateur Le développeur
  • 5. Les exceptions Différentes causes sont à l’origine de ce problème : L’utilisateur peut entrer des données non autorisées. Un chiffre au lieu d’un nombre, …
  • 6. Les exceptions Différentes causes sont à l’origine de ce problème : Le développeur peut avoir oublié de tester une condition
  • 7. Les exceptions Différentes causes sont à l’origine de ce problème : Le développeur peut avoir oublié de tester une condition
  • 8. Les exceptions Différentes causes sont à l’origine de ce problème : Si le développeur écrit trop de test, le code devient vite illisible.
  • 9. Les exceptions Différentes causes sont à l’origine de ce problème : Si le développeur écrit trop de test, le code devient vite illisible. Pour répondre à ce besoin, le langage JAVA propose la gestion des évènements.
  • 10. Les exceptions Soit le programme suivant : package Exercice; public class Exercice3 { public static void main (String [] args) { int a = 5 ; int b= 6 ; int c =0 ; int somme = a*b/c; System.out.println(somme); }}
  • 11. Les exceptions Soit le programme suivant : package Exercice; public class Exercice3 { public static void main (String [] args) { int a = 5 ; int b= 6 ; int c =0 ; int somme = a*b/c; System.out.println(somme); }}
  • 12. Les exceptions package Exercice; public class Exercice3 { public static void main (String [] args) { int a = 5 ; int b= 6 ; int c =0 ; int somme = a*b/c; System.out.println(somme); }}
  • 13. Les exceptions package Exercice; public class Exercice3 { public static void main (String [] args) { int a = 5 ; int b= 6 ; int c =0 ; L’utilisateur peut entrer 0 int somme = a*b/c; System.out.println(somme); }}
  • 14. Les exceptions package Exercice; public class Exercice3 { public static void main (String [] args) { int a = 5 ; int b= 6 ; int c =0 ; Génération d’erreur int somme = a*b/c; System.out.println(somme); Exception in thread "main" java.lang.ArithmeticException: / by zero }} at Exercice.Exercice3.main(Exercice3.java:11)
  • 15. Les exceptions Nous pourrions résoudre ce problème à l’aide d’un test if – else. package Exercice; public class Exercice3 { public static void main (String [] args) { int a = 5 ; Il faudrait tester que la variable c int b= 6 ; est différent de 0. int c =0 ; int somme = a*b/c; System.out.println(somme); }}
  • 16. Les exceptions Nous pourrions résoudre ce problème à l’aide d’un test if – else. package Exercice; public class Exercice3 { public static void main (String [] args) { int a = 5 ; Il faudrait tester que la variable c int b= 6 ; est différent de 0. int c =0 ; if(c!=0) { int somme = a*b/c; System.out.println(somme); } }}
  • 17. Les exceptions Nous pourrions résoudre ce problème à l’aide d’un test if – else. package Exercice; public class Exercice3 { public static void main (String [] args) { int a = 5 ; Ce qui risque d’ alourdir le code et int b= 6 ; le code va vite devenir illisible. int c =0 ; if(c!=0) { int somme = a*b/c; System.out.println(somme); } }}
  • 18. Les exceptions public class Exercice3 { public static void main (String [] args) { int a = 5 ; int b= 6 ; int c = 0 ; try{ int somme = a*b/c; System.out.println(somme); } catch (ArithmeticException e) { System.out.println("Interdit de diviser par 0 !"); } } }
  • 19. Les exceptions public class Exercice3 { public static void main (String [] args) { int a = 5 ; int b= 6 ; int c = 0 ; Cette zone peut générer try{ une erreur int somme = a*b/c; System.out.println(somme); } catch (ArithmeticException e) { System.out.println("Interdit de diviser par 0 !"); } } }
  • 20. Les exceptions public class Exercice3 { public static void main (String [] args) { int a = 5 ; int b= 6 ; int c = 0 ; try{ int somme = a*b/c; System.out.println(somme); } catch (ArithmeticException e) { System.out.println("Interdit de diviser par 0 !"); } }}
  • 21. Les exceptions public class Exercice3 { public static void main (String [] args) { int a = 5 ; int b= 6 ; int c = 0 ; On va mettre le code try{ susceptible de générer une int somme = a*b/c; erreur entre le bloc « try » System.out.println(somme); } catch (ArithmeticException e) { System.out.println("Interdit de diviser par 0 !"); } }}
  • 22. Les exceptions public class Exercice3 { public static void main (String [] args) { int a = 5 ; int b= 6 ; int c = 0 ; Dans le cas d’une exception, try{ l’action à réaliser dans le bloc int somme = a*b/c; « catch » System.out.println(somme); } catch (ArithmeticException e) { System.out.println("Interdit de diviser par 0 !"); } }}
  • 23. Les exceptions public class Exercice3 { public static void main (String [] args) { int a = 5 ; Il est possible de prévoir int b= 6 ; 1 ou plusieurs types d’actions int c = 0 ; à réaliser. try{ int somme = a*b/c; System.out.println(somme); } catch (ArithmeticException e) { System.out.println("Interdit de diviser par 0 !"); } }}
  • 24. Les exceptions Syntaxe JAVA try { .. } catch (ClasseException1 variable) { … } catch (ClasseException2 variable) { … }
  • 25. Les exceptions Syntaxe JAVA try { Partie de code susceptible de générer une erreur } catch (ClasseException1 variable) { } catch (ClasseException2 variable) { … }
  • 26. Les exceptions Syntaxe JAVA try { Partie de code susceptible de générer une erreur } catch (ClasseException1 variable) { Action à réaliser si le cas appartient à ClasseException1 } catch (ClasseException2 variable) { … }
  • 27. Les exceptions Syntaxe JAVA try { Partie de code susceptible de générer une erreur } catch (ClasseException1 variable) { Action à réaliser si le cas appartient à ClasseException1 } catch (ClasseException2 variable) { Action à réaliser si le cas appartient à ClasseException2 }
  • 28. Les exceptions Le bloc finally Un bloc finally permet au programmeur de définir un ensemble d'instructions qui est toujours exécuté, que l'exception soit levée ou non, capturée ou non. La seule instruction qui peut faire qu'un bloc finally ne soit pas exécuté est System.exit().
  • 29. Les exceptions package Exercice; try{ int somme = a*b/c; public class Exercice3 { System.out.println(somme); public static void main } (String [] args) catch (ArithmeticException e) { { System.out.println("Interdit de diviser par 0 !"); int a = 5 ; int b= 6 ; } finally int c = 0 ; { System.out.println("Bloc Finally!"); } } } Le bloc finally sera exécuté à la fin !
  • 30. Les exceptions package Exercice; try{ int somme = a*b/c; public class Exercice3 { System.out.println(somme); public static void main } (String [] args) catch (ArithmeticException e) { { System.out.println("Interdit de diviser par 0 !"); int a = 5 ; int b= 6 ; } finally int c = 0 ; { System.out.println("Bloc Finally!"); } } } Le résultat d’affichage est : Interdit de diviser par 0 ! Bloc Finally!
  • 31. Les exceptions Les erreurs les plus fréquentes : Division par zéro pour les entiers : ArithmeticException référence nulle : NullPointerException Type illégale : ClassCastException Tentative de création d'un tableau de taille négative : NegativeArraySizeException Dépassement de limite d'un tableau : ArrayIndexOutOfBoundsException Format non valable : NumberFormatException
  • 32. Les exceptions Les erreurs les plus fréquentes : Division par zéro pour les entiers : ArithmeticException référence nulle : NullPointerException Type illégale : ClassCastException Tentative de création d'un tableau de taille négative : NegativeArraySizeException Dépassement de limite d'un tableau : ArrayIndexOutOfBoundsException Format non valable : NumberFormatException Et si nous voulons créer nos propres exceptions?
  • 33. Les exceptions package unpackage; package unpackage; public class Passagers { public class Main { public static void main(String[] args) { void doNbPassager(int value) throws Passagers monTrain = new Passagers(); MonExption try{ { monTrain.doNbPassager(5); if(value < 0){ monTrain.doNbPassager(7); throw new MonExption(value); monTrain.doNbPassager(8); } monTrain.doNbPassager(-12); else { System.out.println("Nombre correct de passagers : "+value); } } catch(MonExption a){ } System.out.println ("Exception générée par : "+ a ); } } } } package unpackage; public class MonExption extends Exception { Les exceptions MonExption(int v) { personnalisées. System.out.println("Le nombre de passager ne peut pas être négatif:"+ v); } }
  • 34. Les exceptions package unpackage; package unpackage; public class Passagers { public class Main { public static void main(String[] args) { void doNbPassager(int value) throws Passagers monTrain = new Passagers(); MonExption try{ { monTrain.doNbPassager(5); if(value < 0){ monTrain.doNbPassager(7); throw new MonExption(value); monTrain.doNbPassager(8); } monTrain.doNbPassager(-12); else { System.out.println("Nombre correct de passagers : "+value); } } catch(MonExption a){ } System.out.println ("Exception générée par : "+ a ); } } } } package unpackage; public class MonExption extends Exception { Nous avons 3 classes MonExption(int v) Main ; Classe principale { System.out.println("Le nombre de passager ne peut pas être Passagers : Classe passagers négatif:"+ v); MonException : Exception Personnalisée } }
  • 35. Les exceptions package unpackage; package unpackage; public class Passagers { public class Main { public static void main(String[] args) { void doNbPassager(int value) throws Passagers monTrain = new Passagers(); MonExption try{ { monTrain.doNbPassager(5); if(value < 0){ monTrain.doNbPassager(7); throw new MonExption(value); monTrain.doNbPassager(8); } monTrain.doNbPassager(-12); else { System.out.println("Nombre correct de passagers : "+value); } } catch(MonExption a){ } System.out.println ("Exception générée par : "+ a ); } } } } Etudions un cas où une exception package unpackage; public class MonExption extends Exception { n’est pas générée. MonExption(int v) On appelle la méthode { System.out.println("Le nombre de passager ne peut pas être « doNbPassager » avec négatif:"+ v); « 5 » comme argument. } }
  • 36. Les exceptions package unpackage; package unpackage; public class Passagers { public class Main { public static void main(String[] args) { void doNbPassager(int value) throws Passagers monTrain = new Passagers(); MonExption try{ { monTrain.doNbPassager(5); if(value < 0){ monTrain.doNbPassager(7); throw new MonExption(value); monTrain.doNbPassager(8); } monTrain.doNbPassager(-12); else { System.out.println("Nombre correct de passagers : "+value); } } catch(MonExption a){ } System.out.println ("Exception générée par : "+ a ); } } } } package unpackage; public class MonExption extends Exception { La condition n’est pas respectée. MonExption(int v) { System.out.println("Le nombre de passager ne peut pas être négatif:"+ v); } }
  • 37. Les exceptions package unpackage; package unpackage; public class Passagers { public class Main { public static void main(String[] args) { void doNbPassager(int value) throws Passagers monTrain = new Passagers(); MonExption try{ { monTrain.doNbPassager(5); if(value < 0){ monTrain.doNbPassager(7); throw new MonExption(value); monTrain.doNbPassager(8); } monTrain.doNbPassager(-12); else { System.out.println("Nombre correct de passagers : } "+value); catch(MonExption a){ } System.out.println ("Exception générée par : "+ a ); } } } } } package unpackage; public class MonExption extends Exception { On exécute le contenu du bloc else MonExption(int v) { System.out.println("Le nombre de passager ne peut pas être négatif:"+ v); } }
  • 38. Les exceptions package unpackage; package unpackage; public class Passagers { public class Main { public static void main(String[] args) { void doNbPassager(int value) throws Passagers monTrain = new Passagers(); MonExption try{ { monTrain.doNbPassager(5); if(value < 0){ monTrain.doNbPassager(7); throw new MonExption(value); monTrain.doNbPassager(8); } monTrain.doNbPassager(-12); else { System.out.println("Nombre correct de passagers : "+value); } } catch(MonExption a){ } System.out.println ("Exception générée par : "+ a ); } } } } package unpackage; public class MonExption extends Exception { Etudions un cas où une exception MonExption(int v) { va être levée. System.out.println("Le nombre de passager ne peut pas être négatif:"+ v); } }
  • 39. Les exceptions package unpackage; package unpackage; public class Passagers { public class Main { public static void main(String[] args) { void doNbPassager(int value) throws Passagers monTrain = new Passagers(); MonExption try{ { monTrain.doNbPassager(5); if(value < 0){ monTrain.doNbPassager(7); throw new MonExption(value); monTrain.doNbPassager(8); } monTrain.doNbPassager(-12); else { System.out.println("Nombre correct de passagers : "+value); } } catch(MonExption a){ } System.out.println ("Exception générée par : "+ a ); } } } } package unpackage; public class MonExption extends Exception { On appelle la méthode doNbPassager MonExption(int v) { avec comme argument -12 System.out.println("Le nombre de passager ne peut pas être négatif:"+ v); } }
  • 40. Les exceptions package unpackage; package unpackage; public class Passagers { public class Main { public static void main(String[] args) { void doNbPassager(int value) throws Passagers monTrain = new Passagers(); MonExption try{ { monTrain.doNbPassager(5); if(value < 0){ monTrain.doNbPassager(7); throw new MonExption(value); monTrain.doNbPassager(8); } monTrain.doNbPassager(-12); else { System.out.println("Nombre correct de passagers : "+value); } } catch(MonExption a){ } System.out.println ("Exception générée par : "+ a ); } } } } package unpackage; public class MonExption extends Exception { La condition est respectée. -12 est un MonExption(int v) { nombre négatif. System.out.println("Le nombre de passager ne peut pas être négatif:"+ v); } }
  • 41. Les exceptions package unpackage; package unpackage; public class Passagers { public class Main { public static void main(String[] args) { void doNbPassager(int value) throws Passagers monTrain = new Passagers(); MonExption try{ { monTrain.doNbPassager(5); if(value < 0){ monTrain.doNbPassager(7); throw new MonExption(value); monTrain.doNbPassager(8); } monTrain.doNbPassager(-12); else { System.out.println("Nombre correct de passagers : "+value); } } catch(MonExption a){ } System.out.println ("Exception générée par : "+ a ); } } } } package unpackage; public class MonExption extends Exception { On appelle l’exception MonExption(int v) { « MonException » par le biais du mot System.out.println("Le nombre de passager ne peut pas être clé throw. négatif:"+ v); } }
  • 42. Les exceptions package unpackage; package unpackage; public class Passagers { public class Main { public static void main(String[] args) { void doNbPassager(int value) throws Passagers monTrain = new Passagers(); MonExption try{ { monTrain.doNbPassager(5); if(value < 0){ monTrain.doNbPassager(7); throw new MonExption(value); monTrain.doNbPassager(8); } monTrain.doNbPassager(-12); else { System.out.println("Nombre correct de passagers : "+value); } } catch(MonExption a){ } System.out.println ("Exception générée par : "+ a ); } } } } package unpackage; public class MonExption extends Exception { Nous arrivons dans la méthode qui MonExption(int v) { permet d’exécuter un message System.out.println("Le nombre de passager ne peut pas être personnalisé en cas d’exception. négatif:"+ v); } }
  • 43. Les exceptions package unpackage; package unpackage; public class Passagers { public class Main { public static void main(String[] args) { void doNbPassager(int value) throws Passagers monTrain = new Passagers(); MonExption try{ { monTrain.doNbPassager(5); if(value < 0){ monTrain.doNbPassager(7); throw new MonExption(value); monTrain.doNbPassager(8); } monTrain.doNbPassager(-12); else { System.out.println("Nombre correct de passagers : "+value); } } catch(MonExption a){ } System.out.println ("Exception générée par : "+ a ); } } } } package unpackage; public class MonExption extends Exception { Nous affichons le message. MonExption(int v) { System.out.println("Le nombre de passager ne peut pas être négatif:"+ v); } }
  • 44. Les exceptions package unpackage; package unpackage; public class Passagers { public class Main { public static void main(String[] args) { void doNbPassager(int value) throws Passagers monTrain = new Passagers(); MonExption try{ { monTrain.doNbPassager(5); if(value < 0){ monTrain.doNbPassager(7); throw new MonExption(value); monTrain.doNbPassager(8); } monTrain.doNbPassager(-12); else { System.out.println("Nombre correct de passagers : "+value); } } catch(MonExption a){ } System.out.println ("Exception générée par : "+ a ); } } } } package unpackage; public class MonExption extends Exception { Nous exécutons le message contenu MonExption(int v) { dans le bloc catch. Ce bloc s’exécutera System.out.println("Le nombre de passager ne peut pas être à chaque fois qu’une exception est négatif:"+ v); } attrapée. }