Cours Java
TD2
Correction

Alain Plantec

1 Les exceptions


import java.io.*;

public class TraiteErreur {
    private int val;
    private int min;
    private int max;

    class ValueOutOfBoundsException extends Exception {
	private int val;
	private int min;
	private int max;

	public ValueOutOfBoundsException (int val, int min, int max) {
	    this.val = val;
	    this.min = min;
	    this.max = max;
	}
	public String toString () {
	    return "" + val + ": la valeur doit etre bornee par " + min + " et " + max;
	}
    };

    public TraiteErreur(int lemin, int lemax) {
	val = lemin;  
	min = lemin; 
	max = lemax;
    }

    // Saisie d'un entier sur un Stream et l'affecte a val si pas d'erreur
    // renvoit false si erreur : (val < min || val > max), true sinon
    public void saisirVal(InputStream is) throws ValueOutOfBoundsException, IOException, NumberFormatException {
	BufferedReader br = new BufferedReader (new InputStreamReader (is));
	String s = br.readLine ();
	int i = Integer.valueOf (s).intValue();
	if (i < min || i > max) {
	    throw new ValueOutOfBoundsException (i, min, max);
	}
	val = i;
    }
  
    public static void main (String [] args) {
	DataInputStream dis = new DataInputStream(System.in);
	TraiteErreur te = new TraiteErreur(0,10);
   
	System.out.print ("> saisir une valeur appartenant a [0-10]:");

	try {
	    te.saisirVal (dis);
	    System.out.println ("Saisie OK");
	} catch (ValueOutOfBoundsException voobe) {
	    System.err.println ("Erreur de saisie: " + voobe);
	} catch (IOException ioe) {
	    System.err.println ("Erreur de lecture: " + ioe);
	} catch (NumberFormatException nfe) {
	    System.err.println ("> Erreur de format du nombre saisi");
	}
    }
}





Plantec Alain
2002-02-21