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
 8  Concepts objets avancés en Java
 8.1  Copie simple/légère
 8.2  Retour sur \texttt hashCode()
 8.3  Retour sur les exceptions
 8.3.1  Test des exceptions
 8.3.2  RuntimeException
 Bibliographie

 Contacts

W3C validator

Département INF  
 Conception et programmation orientées objet


8.3.1 Test des exceptions
 
public class TestExceptInHerit{ 
2    /** 
     * Methode verifiant quune valeur est positive. 
     * @param val valeur a tester 
     * @return valeur dentree 
6     * @throws NumException si valeur negative 
     * @throws NullException si valeur egale a zero. 
     */ 
    private static double positifOuNull(final double val) 
10            throws NumException, NullException { 
        if (val < 0.0) { 
            throw new NumException(val, "PositifOuNullvaleurpositiveattendue."); 
        } 
14        if(val == 0.0) { 
            throw new NullException(); 
        } 
        return val; 
18    } 
    /** 
     * traitement partiel dexception les exceptions 
     * NullException sont traitees, les exceptions NumException 
22     * sont traitees partiellement et relayees. 
     * @param val valeur a tester 
     * @throws NumException 
     */ 
26    private static void testPositifOuNull(final double val) 
            throws NumException { 
        double d=0; 
        System.out.println("DanstestPositifOuNullval="+val); 
30        try { 
            d = positifOuNull(val); 
            System.out.println("Pasdexceptionlecodecontinueensequence"); 
        } catch (NullException m) { 
34            System.out.println("CatchNullExceptiondanstestPositifOuNull" + m); 
            throw m; 
        } catch (NumException m) { 
            System.out.println("CatchNumExceptiondanstestPositifOuNull" 
38                    + "traitementpartieletrelais" + m); 
            throw m; 
        } 
        finally { 
42            System.out.println("DanslefinallydetestPositifOuNull" + d); 
        } 
    } 
    public static void main(final String [] args) { 
46        int j = 0; 
        for (String oneArg : args){ 
            try { 
                j = Integer.parseInt(oneArg); 
50                testPositifOuNull(j); 
            } catch (NumberFormatException nfe){ 
                System.out.println("Parameter" + oneArg 
                        + "shouldbeaninteger"); 
54            } catch(NumException n){ 
                System.out.println("Catchdanslemain" + n); 
            } 
        } 
58    } 
}

L’exécution de ce programme avec les arguments du main 2 0 -2 donne l’affichage suivant :  
verbatim

    précédent     suivant 


La méthode Positif lève deux exceptions suivant la valeur de l’argument qui lui est passé. Elle lève l’exception de type NumException lorsqu’elle reçoit un argument dont la valeur est inférieure à zéro. Elle lève l’exception de type NullException lorsqu’elle reçoit un argument égal à 0.

Le méthode testPositif réalise un appel à la méthode Positif et réagit lorsque cette dernière lève une exception. Lorsque l’exception est de type NullException la méthode testPositif traite cette exception et se termine. Il est aussi possible de récupérer une exception, dans notre cas NumException, de réaliser un traitement puis de la retransmettre en utilisant l’instruction throw.

Vous noterez que le bloc finally est exécuté dans tous les cas, c’est-à-dire, qu’il y ait exception ou pas, et que l’exception soit traitée ou pas.

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