Adloun

programmation Java (école d'ingénieur) · Chapitre 11 · Exercice de TD

Un code à reprendre

Exceptions · niveau 2

Énoncé

Relever les mauvaises pratiques de ce code, puis le réécrire.


static int somme(int[] t) {
    int s = 0;
    try {
        int i = 0;
        while (true) { s += t[i]; i++; }
    } catch (Exception e) { }
    return s;
}

static int lireEntier(String texte) {
    try {
        return Integer.parseInt(texte);
    } catch (Exception e) {
        return 0;
    }
}

Corrigé

Trois fautes. somme utilise une exception pour arrêter une boucle (déroulement normal), au lieu de tester la longueur du tableau. Elle rattrape toutes les exceptions (Exception), donc aussi une NullPointerException si t vaut null : on renverrait sans rien dire. Et le catch est vide. lireEntier, elle, transforme en silence « douze » en , une valeur parfaitement plausible : l'erreur disparaît et le calcul suivant sera faux.


static int somme(int[] t) {
    int s = 0;
    for (int x : t) s += x;          // pas d'exception à prévoir
    return s;
}

static int lireEntier(String texte) {
    // on laisse remonter la NumberFormatException : l'appelant décide quoi faire
    return Integer.parseInt(texte.trim());
}

Si l'appelant veut redemander la saisie, c'est à lui d'écrire le try / catch, comme dans l'exercice 11.3.

100 % gratuit

La suite du chapitre est sur Adloun

Exercice suivant et tuteur

Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →