Exceptions (exemple 1)

L'utilisation d'exceptions en Java permet de gérer les erreurs éventuelles pouvant survenir lors de l'execution d'un programme. Elle permet également de vérifier à tout moment le bon déroulement du programme, notamment que les variables utilisées contiennent bien ce qu'elles sont censées contenir.

Voici un exemple simple sur la recherche des racines d'un polynome du second degre.

Les coefficients du polynome sont passés comme arguments du programme à l'exécution. Il faut donc convertir chaque argument (type String) en une variable réelle (type double). Des erreurs peuvent survenir soit parce que le nombre d'arguments est incorrect, soit parce que un ou plusieurs arguments ne sont pas réelles.

utilisation des exceptions dans la recherche des racines d'un polynome du second degre:

/*

 * Main.java
 *
 * Recherche des solutions de l'equation f(x) = 0
 * pour f(x) = ax**2+bx+c
 */

package exception2;

/**

 *
 * @author gmonard
 */

class Polynome_second_degre
{
    private double a; // les trois reels definissant un polynome du second degree
    private double b; // de type ax**2+bx+c
    private double c;

    public Polynome_second_degre(double a, double b, double c)
    {
        this.a = a;
        this.b = b;
        this.c = c;
    }

    // accesseurs pour a, b, et c (vive le copier-coller ...)
    public double geta() {return this.a;}
    public double getb() {return this.b;}
    public double getc() {return this.c;}
    public void seta(double a) {this.a = a;}
    public void setb(double b) {this.b = b;}
    public void setc(double c) {this.c = c;}

    // calcul du delta = b^2-4ac
    private double delta()
    {
        double delta;
        delta = b*b-4.*a*c;
        return delta;
    }

    public double getSolution1()
    {   
        double solution;
        solution = (-b-Math.sqrt(delta()))/(2.*a);
        return solution;
    }
    public double getSolution2()
    {
        double solution;

        solution = (-b+Math.sqrt(delta()))/(2.*a);
        return solution;
    }

}

public class Main {

    /** Creates a new instance of Main */
    public Main() {
    }

    /**

     * @param args the command line arguments
     */
    public static void main(String[] args) {
        /* lecture de a, b et c par la ligne de commande

         */
        double a;
        double b;
        double c;
        RuntimeException nombre_arguments = new RuntimeException("Nombre d'arguments incorrects");
        NumberFormatException type_arguments = new NumberFormatException("Type d'argument incorrect: n'est pas un nombre");

        // verification de la presence de 3 arguments
        if (args.length != 3)
        {
            throw nombre_arguments;
        }

        // on recupere les arguments et on les convertit en double
        try { a = Double.parseDouble(args[0]); }
        catch (NumberFormatException nfe) { throw type_arguments;}
        finally { System.out.println("Argument lu: "+args[0]); }

        try { b = Double.parseDouble(args[1]); }
        catch (NumberFormatException nfe) { throw type_arguments;}
        finally { System.out.println("Argument lu: "+args[1]);}

        try { c = Double.parseDouble(args[2]); }
        catch (NumberFormatException nfe) { throw type_arguments;}
        finally { System.out.println("Argument lu: "+args[2]);}

        Polynome_second_degre p = new Polynome_second_degre(a, b, c);
        System.out.printf("Solution 1: %f\n", p.getSolution1());
        System.out.printf("Solution 2: %f\n", p.getSolution2());

    }

}