NFA032 - 1ère séance de cours : Exemple d'utilisation des exceptions

Modérateurs : F. Barthélemy, eric.soutil

Verrouillé
eric.soutil
Messages : 16
Inscription : 21 oct. 2016 17:47

NFA032 - 1ère séance de cours : Exemple d'utilisation des exceptions

Message par eric.soutil » 22 févr. 2017 11:43

Voici le fichier utilisé en cours pour le rappel sur l'utilisation des exceptions.

Code : Tout sélectionner

public class Exercice1 {
  
  
  public static boolean isNumeric(String str)  
  {  
    try  {   double d = Double.parseDouble(str);   }  
    catch(NumberFormatException nfe) {  return false;  }  
    return true;  
  }
  
  // ----------------------------
  
  public static double lectureX() throws ErreurLecture {
      String phrase;
      double x;
      
      Terminal.ecrireString("Entrez x : ");
      phrase = Terminal.lireString();
      if (! isNumeric(phrase)) throw new ErreurLecture();
      else x = Double.parseDouble(phrase);
    
      Terminal.ecrireStringln("Fin de lectureX");
      return x;
  }
  
  // ----------------------------
  
  public static double calculDenominateur(double x) throws ErreurRacine {
      if (5 - x < 0) throw new ErreurRacine();
      else return Math.sqrt(5-x);
    
  }
  
  // ----------------------------
  
  public static double f(double x) throws ErreurDivParZero, ErreurRacine {
      // f(x) = 1/x + 1/racine(5 - x)
    
      double denominateur = calculDenominateur(x);
      if ((x == 0.0) || (denominateur == 0)) throw new ErreurDivParZero(); 
      Terminal.ecrireStringln("Fin de f");
      return (1/x + 1/denominateur);
  }
  
  // ----------------------------
  
  public static void main(String[] args) {
    char   rep;
    double x, fDeX;
    
    do {
      try {
        x = lectureX();
        fDeX = f(x);
        Terminal.ecrireStringln("f(x) = " + fDeX);
      }
      catch (ErreurLecture e) {
          Terminal.ecrireStringln("Entrez une valeur numérique.");}
      catch (ErreurDivParZero e) {
          Terminal.ecrireStringln("Division par 0 interdite.");}
      catch (ErreurRacine e) {
          Terminal.ecrireStringln("On ne peut pas calculer la racine carrée d'une expression <0");
      }   
      Terminal.ecrireStringln ("Continuer (o/n) ? : ");
      rep = Terminal.lireChar();
    } while (rep != 'n');
    
    Terminal.ecrireStringln("Fin de main");
  }
}
class ErreurLecture extends Exception {};
class ErreurDivParZero extends Exception {};
class ErreurRacine extends Exception {};

Verrouillé

Qui est en ligne ?

Utilisateurs parcourant ce forum : Google [Bot] et 1 invité