Language agnostic SQL异常记录应该在哪一层发生?

Language agnostic SQL异常记录应该在哪一层发生?,language-agnostic,Language Agnostic,让我们假设我有一个应用程序,它有以下几层:UI、控制器、业务逻辑和数据访问层。UI与控制器对话,控制器与业务逻辑对话,业务逻辑与数据访问层对话。让我们假设数据库中有一个表,其中包含错误消息和异常,管理员可以使用这些消息和异常来解决应用程序的问题 如果在数据访问层中引发SQL异常(例如,出现网络问题、字符串将被截断等),则异常信息在记录之前应保持多久?理想情况下,日志将包含来自不同层的消息,这些消息将为开发人员提供足够的信息来跟踪问题。数据访问层中的SQL异常可以一直抛出到UI并记录在那里吗?或者

让我们假设我有一个应用程序,它有以下几层:UI、控制器、业务逻辑和数据访问层。UI与控制器对话,控制器与业务逻辑对话,业务逻辑与数据访问层对话。让我们假设数据库中有一个表,其中包含错误消息和异常,管理员可以使用这些消息和异常来解决应用程序的问题

如果在数据访问层中引发SQL异常(例如,出现网络问题、字符串将被截断等),则异常信息在记录之前应保持多久?理想情况下,日志将包含来自不同层的消息,这些消息将为开发人员提供足够的信息来跟踪问题。数据访问层中的SQL异常可以一直抛出到UI并记录在那里吗?或者它应该在本地捕获、记录,并在另一个自定义异常中重新调用或包装?或者,数据访问层应该返回一个特殊类型,该类型具有一个标志,指示是否存在问题,如果存在问题,它还附加异常信息。另外,将SQL异常/堆栈跟踪信息尽可能扩展到UI是否是一个安全问题


我意识到这对于一些问题来说可能有点主观,但我很好奇专家们怎么说。如果您需要澄清,请告诉我。

服务层不应出现任何异常。如果您删除UI,您不希望服务仍能正常工作吗

这也是有意义的,因为很容易将您的日志记录到方面中,并以声明方式将它们应用于服务接口

如果自定义异常增加了值,则可以进行换行和重新换行