【发布时间】:2010-12-19 18:50:55
【问题描述】:
让我们假设我有一个具有以下层的应用程序:UI、控制器、业务逻辑和数据访问层。 UI 与控制器对话,控制器与业务逻辑对话,业务逻辑与数据访问层对话。假设我在数据库中有一个表,其中包含管理员可以用来解决应用程序问题的错误消息和异常。
如果在数据访问层中抛出 SQL 异常(例如,存在网络问题、字符串将被截断等),异常信息在被记录之前应该达到多远?理想情况下,日志将包含来自各个层的消息,这些消息将为开发人员提供足够的信息来追踪问题。数据访问层中的 SQL 异常可以一直扔到 UI 并在那里记录吗?还是应该在本地捕获、记录并重新抛出或包装在另一个自定义异常中?或者数据访问层是否应该返回一个特殊类型,该类型具有指示是否存在问题的标志,如果是,它还附加异常信息。此外,将 SQL 异常/堆栈跟踪信息传递到 UI 是否存在安全问题?
我意识到这对于一个问题来说可能有点主观,但我很好奇专家们是怎么说的。如果您需要澄清,请告诉我。
【问题讨论】: