¿Es una buena práctica implementar un manejo de excepciones inútil, en caso de que otra parte del código no esté codificada correctamente?
Ejemplo básico
Una simple, así que no pierdo a todos :).
Digamos que estoy escribiendo una aplicación que mostrará la información de una persona (nombre, dirección, etc.), los datos que se extraen de una base de datos. Digamos que soy yo quien codifica la parte de la interfaz de usuario, y alguien más está escribiendo el código de consulta DB.
Ahora imagine que las especificaciones de su aplicación dicen que si la información de la persona está incompleta (digamos que falta el nombre en la base de datos), la persona que codifica la consulta debe manejar esto devolviendo "NA" para el campo faltante.
¿Qué sucede si la consulta está mal codificada y no maneja este caso? ¿Qué sucede si el tipo que escribió la consulta maneja un resultado incompleto y cuando intenta mostrar la información, todo falla, porque su código no está preparado para mostrar cosas vacías?
Este ejemplo es muy básico. Creo que la mayoría de ustedes dirá "no es su problema, no son responsables de este bloqueo". Pero, sigue siendo tu parte del código la que falla.
Otro ejemplo
Digamos ahora que soy yo quien escribe la consulta. Las especificaciones no dicen lo mismo que arriba, pero el tipo que escribe la consulta "insertar" debe asegurarse de que todos los campos estén completos al agregar una persona a la base de datos para evitar insertar información incompleta. ¿Debo proteger mi consulta "select" para asegurarme de proporcionarle al chico de la interfaz de usuario información completa?
Las preguntas
¿Qué pasa si las especificaciones no dicen explícitamente "este tipo es el encargado de manejar esta situación"? ¿Qué sucede si una tercera persona implementa otra consulta (similar a la primera, pero en otra base de datos) y usa su código de UI para mostrarla, pero no maneja este caso en su código?
¿Debo hacer lo que sea necesario para evitar un posible bloqueo, incluso si no soy yo quien debe manejar el mal caso?
No estoy buscando una respuesta como "(s) él es el responsable del accidente", ya que no estoy resolviendo un conflicto aquí, me gustaría saber, si protejo mi código contra situaciones no es mi responsabilidad ¿manejar? Aquí, un simple "si está vacío hacer algo" sería suficiente.
En general, esta pregunta aborda el manejo de excepciones redundante. Lo pregunto porque cuando trabajo solo en un proyecto, puedo codificar 2-3 veces un manejo de excepciones similar en funciones sucesivas, "por si acaso", hice algo mal y dejé pasar un mal caso.