En los años que pasé programando y desarrollando sistemas, solo hay dos situaciones en las que encontré útil el patrón en cuestión (en ambos casos la supresión contenía también el registro de la excepción lanzada, no considero que la captura y el null
retorno sean una buena práctica )
Las dos situaciones son las siguientes:
1. Cuando la excepción no se consideró un estado excepcional
Esto es cuando realiza una operación en algunos datos, que pueden arrojarse, sabe que pueden arrojarse, pero aún así desea que su aplicación siga ejecutándose, porque no necesita los datos procesados. Si los recibe, es bueno, si no los recibe, también es bueno.
Se pueden tener en cuenta algunos atributos opcionales de una clase.
2. Cuando proporciona una nueva implementación (¿mejor, más rápida?) De una biblioteca utilizando una interfaz ya utilizada en una aplicación
Imagina que tienes una aplicación que usa algún tipo de biblioteca antigua, que no arrojó excepciones pero regresó null
por error. Por lo tanto, creó un adaptador para esta biblioteca, prácticamente copió la API original de la biblioteca y está utilizando esta nueva interfaz (aún no lanzada) en su aplicación y manejando los null
cheques usted mismo.
Viene una nueva versión de la biblioteca, o tal vez una biblioteca completamente diferente que ofrece la misma funcionalidad, que, en lugar de devolver null
s, arroja excepciones y desea usarla.
No desea filtrar las excepciones a su aplicación principal, por lo que debe suprimirlas y registrarlas en el adaptador que cree para ajustar esta nueva dependencia.
El primer caso no es un problema, es el comportamiento deseado del código. Sin embargo, en la segunda situación, si en todas partes el null
valor de retorno del adaptador de biblioteca realmente significa un error, refactorizar la API para lanzar una excepción y atraparlo en lugar de verificarlo null
puede ser (y el código generalmente es una buena idea).
Yo personalmente uso la supresión de excepciones solo para el primer caso. Solo lo he usado para el segundo caso, cuando no teníamos el presupuesto para hacer que el resto de la aplicación funcionara con las excepciones en lugar de null
s.