Remplacer une exception par un test.
Vous levez une exception là où un simple test ferait l'affaire ?
Remplacez l'exception par un test conditionnel.
##Example
double getValueForPeriod(int periodNumber) {
try {
return values[periodNumber];
} catch (ArrayIndexOutOfBoundsException e) {
return 0;
}
}double getValueForPeriod(int periodNumber) {
if (periodNumber >= values.length) {
return 0;
}
return values[periodNumber];
}##Why Refactor
Les exceptions doivent servir à gérer un comportement irrégulier lié à une erreur inattendue. Elles ne doivent pas remplacer un test. Si une exception peut être évitée en vérifiant simplement une condition avant l'exécution, alors faites-le. Les exceptions doivent être réservées aux véritables erreurs.
Par exemple, vous êtes entré dans un champ de mines et y avez déclenché une mine, provoquant une exception ; l'exception a été gérée avec succès et vous avez été projeté dans les airs jusqu'à un endroit sûr au-delà du champ de mines. Mais vous auriez pu éviter tout cela en lisant simplement le panneau d'avertissement placé à l'entrée du champ de mines.
##Benefits
- Une simple condition peut parfois être plus évidente que du code de gestion d'exceptions.
##How to Refactor
-
Créez une condition pour le cas limite et placez-la avant le bloc try/catch.
-
Déplacez le code de la section
catchà l'intérieur de cette condition. -
Dans la section
catch, placez le code qui lève une exception habituelle anonyme et lancez tous les tests. -
Si aucune exception n'a été levée pendant les tests, débarrassez-vous de l'instruction
try/catch.