Reemplazar Excepción con Comprobación.
¿Lanzas una excepción en un lugar donde una simple comprobación haría el trabajo?
Reemplaza la excepción con una comprobación de condición.
##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
Las excepciones deberían usarse para manejar comportamientos irregulares relacionados con un error inesperado. No deberían servir como sustituto de una comprobación. Si se puede evitar una excepción simplemente verificando una condición antes de ejecutar, hazlo. Las excepciones deberían reservarse para errores reales.
Por ejemplo, entraste en un campo de minas y activaste una mina allí, lo que provocó una excepción; la excepción se manejó con éxito y saliste volando por los aires hasta ponerte a salvo más allá del campo de minas. Pero podrías haber evitado todo esto con solo leer, para empezar, el cartel de advertencia que había delante del campo de minas.
##Benefits
- A veces, una condición simple puede ser más obvia que el código de manejo de excepciones.
##How to Refactor
-
Crea una condición para un caso límite y muévela antes del bloque try/catch.
-
Mueve el código de la sección
catchdentro de esta condición. -
En la sección
catch, coloca el código para lanzar una excepción habitual sin nombre y ejecuta todas las pruebas. -
Si no se lanzaron excepciones durante las pruebas, deshazte del operador
try/catch.