Exercice Java : Les Exceptions

EXERCICE + CORRIGE EN JAVA :  lES EXECEPTIONS EN JAVA

 

On veut définir une classe EntNat permettant de manipuler des entiers naturels (positifs ou nuls). Cette classe dispose simplement :


1) Définissez la classe EntNat satisfaisant la description précédente (on suppose donnée la définition de la classe ErrConst: class ErrConst extends Exception {...}). (2pts)


class EntNat {
    private int n;

    // Constructeur avec gestion d'exception
    public EntNat(int valeur) throws ErrConst {
        if (valeur < 0) {
            throw new ErrConst(valeur);
        }
        this.n = valeur;
    }

    // Méthode pour obtenir la valeur encapsulée
    public int getN() {
        return n;
    }
}

2) Écrivez un petit programme d'utilisation qui traite l'exception ErrConst en affichant un message et en interrompant l'exécution. (1,5pts)


public class ProgrammeUtilisation {
    public static void main(String[] args) {
        try {
            // Utilisation de la classe EntNat avec gestion d'exception
            EntNat entierPositif = new EntNat(42);
            System.out.println("Valeur de l'entier naturel : " + entierPositif.getN());

            // Tentative de création d'un entier négatif (générera une exception)
            EntNat entierNegatif = new EntNat(-5);
        } catch (ErrConst e) {
            // Gestion de l'exception avec affichage du message et de la valeur incorrecte
            System.out.println("Erreur : " + e.getMessage());
            System.out.println("Valeur incorrecte : " + e.getValeurInvalide());
            // Interruption de l'exécution
            System.exit(1);
        }
    }
}

3) Adaptez 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. (0,5pt)

La classe EntNat et le programme d'utilisation dans les réponses précédentes ont déjà été adaptés pour stocker la valeur fournie à tort au constructeur dans l'objet d'exception ErrConst.

4) Donnez le code de la classe ErrConst (class ErrConst extends Exception {...}) (2pts)


class ErrConst extends Exception {
    private int valeurInvalide;

    // Constructeur avec valeur incorrecte
    public ErrConst(int valeur) {
        super("La valeur " + valeur + " est incorrecte.");
        this.valeurInvalide = valeur;
    }

    // Méthode pour obtenir la valeur incorrecte
    public int getValeurInvalide() {
        return valeurInvalide;
    }
}

5) Donnez une nouvelle version du programme utilisateur faisant usage de la valeur fournie à tort au constructeur (1pt)


public class ProgrammeUtilisation {
    public static void main(String[] args) {
        try {
            // Utilisation de la classe EntNat avec gestion d'exception
            EntNat entierPositif = new EntNat(42);
            System.out.println("Valeur de l'entier naturel : " + entierPositif.getN());

            // Tentative de création d'un entier négatif (générera une exception)
            EntNat entierNegatif = new EntNat(-5);
        } catch (ErrConst e) {
            // Gestion de l'exception avec affichage du message et de la valeur incorrecte
            System.out.println("Erreur : " + e.getMessage());
            System.out.println("Valeur incorrecte : " + e.getValeurInvalide());
            // Interruption de l'exécution
            System.exit(1);
        }
    }
}
Expliquez les sorties des instructions java suivantes : table.printindex1(5), table.printindex2(5), table.printindex3(5) :
public class Tableau {

    private int[] tab;

    public Tableau(int length) {
        tab = new int[length];
    }

    public static void main(String[] args) throws IndexTabException {
        Tableau tableau = new Tableau(5);

        tableau.printIndex1(5);
        tableau.printIndex2(5);
        tableau.printIndex3(5);
    }

    void printIndex1(int i) {
        try {
            System.out.println(tab[i]);
        } catch (IndexOutOfBoundsException e) {
            System.out.println("Index invalide");
        }
    }

    void printIndex2(int i) {
        try {
            if (i < 0 || i >= tab.length) {
                throw new IndexOutOfBoundsException();
            }
            System.out.println(tab[i]);
        } catch (IndexOutOfBoundsException e) {
            System.out.println("Index invalide");
        }
    }

    void printIndex3(int i) throws IndexTabException {
        if (i < 0 || i >= tab.length) {
            throw new IndexTabException("Index invalide");
        }
        System.out.println(tab[i]);
    }
}

class IndexTabException extends Exception {
    public IndexTabException(String s) {
        super(s);
    }
}

Pour comprendre les sorties des instructions table.printIndex1(5), table.printIndex2(5), et table.printIndex3(5), examinons chaque méthode séparément. table.printIndex1(5) : La méthode printIndex1 essaie d'accéder à l'élément tab[5]. Cependant, la taille du tableau est de 5 (Tableau tableau = new Tableau(5)), donc le dernier index valide est tab[4]. En conséquence, une IndexOutOfBoundsException sera déclenchée, et le bloc catch sera exécuté, affichant "Index invalide". table.printIndex2(5) : La méthode printIndex2 vérifie d'abord si l'index i est dans la plage valide. Comme i est égal à 5 et la taille du tableau est de 5, la condition i >= tab.length est vraie. Par conséquent, la méthode lance une IndexOutOfBoundsException, et le bloc catch est exécuté, affichant "Index invalide". table.printIndex3(5) : La méthode printIndex3 lance directement une IndexTabException si l'index i est en dehors de la plage valide. Comme i est égal à 5 et la taille du tableau est de 5, une IndexTabException sera déclenchée, affichant "Index invalide".

Si vous avez trouvé les exercices corrigés en Java de Mr JoëlYk intéressants et utiles, pourquoi ne pas les partager avec d'autres personnes qui pourraient également en bénéficier ? Partagez ce lien sur les réseaux sociaux ou envoyez-le à vos amis et collègues. Vous pourriez aider quelqu'un à améliorer ses compétences en programmation ou à trouver des solutions à des problèmes complexes. N'oubliez pas que la connaissance doit être partagée pour grandir. Merci pour votre soutien et votre partage !

Contact WhatsApp : +237 652027193 | Réaliser Par Joël_Yk

  • Aucune note. Soyez le premier à attribuer une note !

Ajouter un commentaire

Anti-spam