应该处理sqlexception的策略是什么?

我有一个多层应用程序。 DAL – > BAL – > Business Gateway – > UI。 如果在DAL发生外键或唯一约束exception,我们应该如何识别这是什么exception以及向用户显示什么错误消息。 我们应该使用错误号来识别这个。

第二个问题:我们应该如何将此错误传播给UI。 我们正在考虑将此exception抛给BAL,BAL将封装错误并向UI返回响应(而不是exception)。 这是正确的方法吗?

DALexception应由BAL处理和重新抛出(作为自定义exception)。 您应该通过您正在使用的通信渠道序列化并发送到您的UI。

您不需要向用户显示确切的错误或错误号,因为这会形成糟糕的用户体验。 您可以告诉他们您无法在db中执行操作。 您可以在某些日志文件或Windows事件日志中记录详细信息。

编辑: SqlException有错误代码,您可以在DAL中检查,然后基于此抛出一个特定的exception。 您的DAL将SQL Server抽象为后端存储,因此SqlExceptions不应泄漏到DAL之外。 所以在DAL中检查ErrorCode并抛出一个特定的exception。