Accueil
 Sommaire du cours
 1  Introduction à Java
 2  Concepts de bases de Java
 3  Classes et objets en Java
 4  Généralisation spécialisation en Java
 5  Organisation des sources Java
 6  API Java
 7  Exceptions en Java
 7.1  Motivation: retours sur un bug
 7.2  Principes
 7.3  Réalisation
 7.4  Traitement des exceptions
 7.5  Exemple de traitement d'exceptions
 Questions
 8  Concepts objets avancés en Java
 Bibliographie

 Contacts

W3C validator

Département INF  
 Conception et programmation orientées objet


7.5 Exemple de traitement d’exceptions

 
public class NumException extends Exception { 
  private static final long serialVersionUID = 1L; 
3  public NumException(final double valeur, final String s) { 
        super(s + "valeur:" + valeur); 
  } 
}
 
public class TestSimpleExcept { 
2    /** 
     * Positif teste si la valeur du parametre val est positive. 
     * @param val valeur a tester 
     * @throws NumException si val est < 0 
6     */ 
    private static void positif(final double val) throws NumException { 
        if (val < 0.0) throw new NumException(val, "Valeurpositiveattendue."); 
        return; 
10    } 
    /** 
     * testPositif utilise positif et relaye lexception NumException. 
     * @param val valeur a tester. 
14     * @throws NumException lorsque positif emet NumException 
     */ 
    private static void testPositif(double val) throws NumException { 
        positif(val); 
18        System.out.println("Pasdexceptionlecodecontinueensequence"); 
        return ; 
    } 
    /** 
22     * Traitement des arguments de main par test des 
     * valeurs entieres positives. 
     * @param argv arguments de la ligne de commande. 
     */ 
26    public static void main(final String [] argv) { 
        int i, j = 0; 
        for (i=0;i<argv.length;i++) { 
            try { 
30                j = Integer.parseInt(argv[i]); 
                testPositif(j); 
            } catch (NumberFormatException nfe){ 
                System.out.println("Parameter" + argv[i] + "shouldbeaninteger"); 
34            } catch(NumException n){ 
                System.out.println("Catchdanslemain" + n); 
            } 
        } 
38    } 
}

Trace d’exécution avec arguments 2, -3 et 3 :  

verbatim

    précédent     suivant 


Dans cet exemple la classe NumException permet de caractériser des exceptions qui sont relatives à une valeur numérique reçue en paramètre.

Cette exception est utilisée dans la méthode positif de la classe TestSimpleExcept pour interrompre le cours normal de l’exécution du programme lorsque cette méthode est appelée avec un argument inférieur à 0.

La méthode positif est appelée à travers testPositif qui ne lève pas d’exception elle-même mais relaie l’exception, du fait qu’elle contient la clause throws. L’exécution de cette méthode est interrompue lorsqu’une exception est levée.

La méthode main contrôle les appels à testPositif par un bloc try catch.

Christian Bac, Denis Conan, Télécom SudParis, CSC 4002, Octobre 2015