Java pour l'informatique industrielle
Chapitre 1. Introduction aux objets
Chapitre 2. Les structures de contrôle
2.1. Abstraction et modularité
2.2. La comparaison
2.3. Le choix
2.4. Les constructeurs
2.5. La surcharge
2.6. La répétition
2.7. Les variables
2.8. Le domaine de valeur
2.8.1. Les assertions
2.8.2. Les exceptions
2.9. Exercice
Chapitre 3. Unifier et réutiliser
Chapitre 4. Modèle, Vue et Contrôle
Chapitre 5. Les entrées/sorties
Page d'accueilTable des matièresNiveau supérieurPage précédenteBas de la pagePage suivante

2.8.2. Les exceptions

Au cas où on ne disposerait pas d'un compilateur compatible JDK 1.4, on peut obtenir quasiment le même comportement avec les exceptions.

L'avantage des assertions sur les exceptions est que les assertions peuvent être désactivées à la compilation ou à l'exécution.

class CompteurNBits { private int etat; private byte n; /** @param n nombre de bits pour coder l'état, 0 < n < 31 */ CompteurNBits(byte n) { if ((n <= 0) || (n > 30)) throw new RuntimeException("0 < n < 31"); this.n = n; } /** @param n nombre de bits pour coder l'état, 0 < n < 31 * @param etat valeur initiale de l'état, 0 ≤ etat < 2n*/ CompteurNBits(int etat, byte n) { this(n); if ((etat < 0) || (etat >= (1 << n)) throw new RuntimeException("0 ≤ etat < 2n"); this.etat = etat; }

Attention, alors qu'avec les assertions, la condition à donner est l'invariant que l'on souhaite vérifier, avec le if combiné aux exceptions, il faut mettre l'opposé de l'invariant. Une raison de plus de préférer les assertions lorsque c'est possible.

Néanmoins, les exceptions constituent un mécanisme puissant sur lequel nous aurons l'occasion de revenir.

Page d'accueilTable des matièresNiveau supérieurPage précédenteHaut de la pagePage suivante