Exercice Java : Déclenchement et traitement d’une exception

Exercice java traite le  sujet suivant:

Déclenchement et traitement d’une exception

Nous “déclenchons ” une exception à l’aide de l’instruction throw. Pour lancer une exception au sein de notre constructeur, nous fournirons à l’instruction throw un objet de type Errconst.

Examinons ce petit Exercice java:



Réaliser une classe EntNat permettant de manipuler des entiers naturels (positifs ou nuls).
Pour l’instant, cette classe disposera simplement :

  • d’un constructeur à un argument de type int qui générera une exception de type ErrConst (type classe à définir) lorsque la valeur reçue ne conviendra pas,
  • d’une méthode getN fournissant sous forme d’un int, la valeur encapsulée dans un objet de type EntNat.

Écrire un petit programme d’utilisation qui traite l’exception ErrConst en affichant un message et en interrompant  l’exécution.

Le constructeur de la classe EntNat doit donc déclencher une exception de type ErrConst lorsque la valeur reçue par son constructeur est négative. Ici, la classe ErrConst peut être réduite à sa plus simple expression, à savoir ne comporter ni champs ni méthodes. La définition de EntNat pourrait se présenter ainsi :

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

On notera qu’en l’absence de la clause throws ErrConst dans l’en-tête du constructeur de EntNat, on obtiendrait une  erreur de compilation. D’autre part, il est indispensable que la classe ErrConst dérive de la classe Exception (le  compilateur s’assure bien que l’objet mentionné à throw est d’un type compatible avec Exception).

Voici un programme d’utilisation dans lequel nous traitons l’exception ErrConst en incluant les instructions concernées dans un bloc try que nous faisons suivre d’un gestionnaire introduit par catch(ErrConst e). Comme demandé, nous y  affichons un message (*** erreur construction ***) et nous mettons fin à l’exécution par l’appel de System.exit.

public class TstEntNat
{ 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 ("*** erreur construction ***") ;
      System.exit (-1) ;
    }
  }
}

n1 = 20
*** erreur construction ***

Speak Your Mind

*


*