我有一个多层应用程序。 DAL - > BAL - > Business Gateway - > UI。 如果在DAL中发生外键或唯一约束异常,我们应该如何识别这是什么异常以及向用户显示什么错误消息。我们是否应该使用错误号来识别这一点。
第二个问题:我们应该如何将此错误传播给UI。我们正在考虑将此异常抛给BAL,BAL将封装错误并向UI返回响应(而不是异常)。这是正确的做法。
答案 0 :(得分:3)
DAL异常应由BAL处理和重新抛出(作为自定义异常)。您应该通过您正在使用的通信渠道序列化并发送到您的UI。
您不需要向用户显示确切的错误或错误号,因为这会形成糟糕的用户体验。您可以告诉他们您无法在db中执行操作。您可以在一些日志文件或Windows事件日志中记录详细信息。
编辑: SqlException有错误代码,您可以在DAL中检查,然后根据该错误抛出特定的异常。您的DAL将SQL Server抽象为后端存储,因此SqlExceptions不应泄漏到DAL之外。因此,在DAL中检查ErrorCode并抛出一个特定的异常。