Las excepciones en la manera en la que Java dice “¡Espera! No puedo ejecutar esta acción. Aquí debe de haber un error”. Afortunadamente con Java podemos Manejar estos errores (Excepciones) y así hacer que nuestro software se recupere de esos errores o muestre un bonito error al usuario diciendo que esa la acción que está intentando hacer no es permitida. Ahora aquí tienes 10 Tips para el manejo de Excepciones en Java.
1. Conoce los tipos de excepciones
Existen principalmente dos tipos de excepciones. Checked Exceptions y Uncheked Exceptions.
Las Checked exceptions son las excepciones que dependen de un comportamiento externo y podrían solucionarse con un reintento. Por ejemplo, un archivo no encontrado. IOException, SQLException y FileNotFoundException son de tipo Checked Exceptions.
Las Unchecked exceptions son las excepciones que no deberían ocurrir y pueden ser evitadas con alguna validación en la lógica. Por ejemplo NullPonterExcepcion y ArrayIndexOutOfBoundsException.
2. Como se captura una excepción
Para capturar una excepción podemos usar el bloque de código try – catch – finally. Este bloque de código consta de una cláusula try cero o múltiples cláusulas catch(Aunque se recomienda tener al menos una) y la cláusula finally que es opcional.
Bloque Try
Dentro del bloque try debemos escribir el código que queramos proteger. El código que es propenso a algún error.
Bloque Catch
Este bloque de código atrapará la excepción ocurrida en el bloque try y así poder darle el manejo que queramos. Podemos hacer un reintento, correr un flujo alternativo o mostrar un error al usuario, entre muchas otras opciones.
Se puede escribir mas de un bloque catch. Con esto podemos especificar el tipo de excepción que atrapara cada bloque y darle un procesado diferente a cada una de ellas.
Bloque Finally
Este bloque de código es opcional. Se ejecuta siempre, ya sea que el bloque try allá ejecutado todas sus líneas sin error o cuando el bloque catch allá ha sido procesado por completo.
3. Válida antes de atrapar excepciones en Java
No uses las excepciones como lógica de negocio. Siempre que sea posible validar un posible error, hazlo. Las excepciones de tipo Unchecked deberían ser evitadas por completo usando validaciones para evitar nulos, divisiones por 0, desbordes de arrays etcétera.
4. Atrapa excepciones específicas
Al capturar Excepción estás manejando un rango demasiado amplio, lo que puede llevarte a no saber qué tipo de excepción sucedió.
Para evitarlo, crea bloques catch específicos que te permitan manejar de manera diferente cada excepción.
5. No lance y pinte en el log una excepcion al mismo tiempo
Al capturar una excepción puedes elegir además lanzarla para manejarla después, si vas a optar por esta opción no pintes también el error en el log. Esto dará la impresión de tener dos errores cuando realmente solo existe uno.
6. Nunca haga un return null en un catch
Hacer un return null puede llevar a tener que validar posteriormente ese valor nulo y ocultar información real del error, lo que dificultaría el diagnóstico. En lugar de retornar null podemos lanzar una excepción para manejarla de manera más adecuada.
7. Try-With-Resources
Try-With-Resources es una mejora al bloque try tradicional. Con ella podemos simplificar los recursos (Conexiones de red, uso de archivos, etc) y dejar que el bloque try cierre los recursos automáticamente al terminar la ejecución del mismo. Pero para ello es necesario que el objeto con los recursos implemente la Interfaz AutoClosable
8 Cree excepciones Personalizadas en Java
En Java puedes crear excepciones personalizadas. Puedes usarlas cuando no puedes ser manejadas por las excepciones predefinidas de Java. Al separarlas de estas puedes darles un manejo específico. Además, puede ayudar a encapsular detalles internos de la aplicación.
9. Escribe solo una línea de log por error
En una aplicación con muchos procesos concurrentes, múltiples líneas de log podrían intercalarse y al final no saber a qué ejecución pertenece. Como alternativa puedes poner una misma línea de log con toda la información necesaria.
10. Nunca usar printStackTrace()
Usar printStackTrace quita legibilidad y no proporciona información útil sobre el contexto de la ejecución. En su lugar, usa APIs de registros de logs como Log4j o SL4J y agrega información contextual para facilitar ayudar a identificar el problema.
Excepciones en Java Conclusión
Ahora sabemos para qué sirven tenemos a la mano 10 tips para el manejo de excepciones. Estos consejos te ayudarán a tener un código más limpio y te ayudarán a tener los errores más comunes al manejar las excepciones.