Java: Exemple de gestion des exceptions

 

// Version de Masson Laurent
 
import java.io.*;
 
class ExceptionSaisie extends Exception {
private int val;
private String msg;
 
public ExceptionSaisie (String _msg,int _val) {
super (_msg);
msg = _msg;
val = _val;
}
public String toString () {
return "Erreur de saisie, la valeur " + val + " est " + msg;
}
}
 
class TraiteErreur {
  private int val;
  private int max;
  private int min;
 
  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(BufferedReader is) throws ExceptionSaisie {
      String s = "0";
      try {
        System.out.println ("Saisir une valeur: ");
        s = is.readLine();
      } catch (java.io.IOException ioe) {
        System.out.println(ioe);
      }
      int i = (Integer.valueOf(s)).intValue();
      if (i < min)
      throw new ExceptionSaisie ("trop petite",i);
      else if (i > max)
      throw new ExceptionSaisie ("trop grande",i);
 
      System.out.println ("Saisie Ok");
      val = i;
  }
  
  public static void main (String [] args) {
    BufferedReader dis = new BufferedReader(new InputStreamReader(System.in));
    TraiteErreur te = new TraiteErreur(0,10);
    
    try {
    te.saisirVal(dis);
    }
    catch (ExceptionSaisie e) {
    System.out.println (e);
    }
    /*if (!te.saisirVal(dis)) {
      System.out.println("Erreur de saisie");
    } else {
      System.out.println("Saisie OK");
    }*/
  }
}