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
- 10 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.