en mi humilde opinion... yo diria "en todos lados".
pero entiendase la expresion... de la manera mas logica posible.. ¿como?
Por ejemplo.. en algunas aplicaciones que he trabajado.. se ha hecho de la siguiente manera.
- Se ha creado una clase para manejo de errores en la CAPA DE USUARIO. Ello implica que cualquier error sucitado atravez o en la CAPA DE USUARIO..va a parar a un MANEJADOR DE ERRORES, el cual tiene la capacidad de iteracturar con el USUARIO FINAL. De tal suerte que el usuario perfectamente obtiene:
-Numero de error
-Mensaje de error
-Tipo de error (ligico, de datos, de parametros,etc)
-Nombre del Modulo donde se genero el error
-Nombre del Procedimiento donde se genero el error
pd. Cabe señalar que a nivel de la capa de usuario, tambien valido, aquellos errores controlados tales como.. RESTRICCIONES, VALIDACIONES.. Por ejemplo.. que no me guarde una informacion si no ha completado todos los campos etc... lo llevo a un manejador de errores tambien.
Pero asuvez, tambien se ha manejado otra clase de MANEJO DE ERRORES, a nivel de la CAPA DE NEGOCIOS. Donde el usuario tambien perfectamente puede enterarse de los diferentes tipos de errores con los que se esta encontrando.
-Numero de error
-Mensaje de error
-Tipo de error (conexion, sintaxis,acceso denegado, error al gaurdar, al borrar, al insertar)
-Nombre de la tabla dond ese genero el error
-INstruccion que genera el error (delete, insert, update, truncate, import, etc)
No se si con todo eso... te doy una idea... Por experiencia... yo soy de los que considera tener un manejador de errores.. bien controlado.. en ambas capas... INTERFAZ DE USUARIO... CAPA DE NEGOCIOS...
Ahora bien... es necesario aclarar que tambien se puede manejar errores en LA BASE DE DATOS.. Soy de la idea de que si vas a manejar eventos de errores en la base de datos.. que estos sirvan para levantar una VITACORA DE ALTA FUNCIONABILIDAD y no para mandar mensajes al usuario final.. Si no que ello sirva para monitoreo de administracion.
si me explique?