Exercice Java : Transmission d’information au gestionnaire

Exercice java traite le  sujet suivant:

Transmission d’information au gestionnaire

Examinons ce petit Exercice java:



Adapter la classe EntNat de l’exercice  et le programme d’utilisation de manière à disposer dans le gestionnaire d’exception du type ErrConst de la valeur fournie à tort au constructeur.

Cette fois, nous prévoyons, dans la classe ErrConst, un champ valeur destiné à conserver la valeur avec laquelle on a tenté de construire à tort un entier naturel. La façon la plus simple d’attribuer une valeur à ce champ consiste à le faire lors de la création de l’objet de type ErrConst, en la transmettant au constructeur. Ici, nous avons fait de valeur un champ privé, de sorte que nous dotons notre classe ErrConst d’une méthode d’accès getValeur. Voici la nouvelle définition de nos classes EntNat et ErrConst :

class EntNat
{ public EntNat (int n) throws ErrConst
  { if (n<0)  throw new ErrConst(n) ;
    this.n = n ;
  }
  public int getN () { return n ; }
  private int n ;
}
class ErrConst extends Exception
{ public ErrConst (int valeur) { this.valeur = valeur ; }
  public int getValeur() { return valeur ; }
  private int valeur ;
}

Dans notre programme d’utilisation, nous devons récupérer la valeur coupable dans le gestionnaire d’exception.
Il nous suffit pour cela de recourir à la méthode getValeur :

public class TstEntN1
{ public static void main (String args[])
  { try
    { EntNat n1 = new EntNat(20) ;
      System.out.println ("n1 = " + n1.getN()) ;
      EntNat n2 = new EntNat(-12) ;
      System.out.println ("n2 = " + n2.getN()) ;
    }
    catch (ErrConst e)
    { System.out.println ("*** tentative construction naturel avec "
                           + e.getValeur() + " ***") ;
      System.exit (-1) ;
    }
  }
}
n1 = 20
*** tentative construction naturel avec -12 ***


En pratique, on se permettra souvent de ne pas appliquer le principe d’encapsulation à des champs tels que valeur. Ainsi, en le déclarant public, on pourra se passer de la méthode getValeur et écrire directement dans le gestionnaire :

System.out.println ("*** tentative construction naturel avec "
                        + e.valeur + " ***") ;

Speak Your Mind

*


*