我有一个多层应用程序。 DAL -> BAL -> 业务网关 -> 用户界面。 如果DAL处出现外键或唯一约束异常,我们应该如何识别这是哪个异常,向用户显示什么样的错误信息。我们是否应该使用错误编号来识别这一点。
第二个问题:我们应该如何将此错误传播到 UI。我们正在考虑将此异常抛给 BAL,BAL 将封装错误并向 UI 返回响应(不是异常)。这是正确的方法吗。
最佳答案
DAL 异常应该由您的 BAL 处理和重新抛出(作为自定义异常)。您应该将其序列化并通过您正在使用的通信 channel 发送到您的 UI。
您不需要向用户显示确切的错误或错误编号,因为那样会形成糟糕的用户体验。你可以告诉他们你不能在数据库中执行操作。您可以在某些日志文件或 Windows 事件日志中记录详细信息。
编辑: SqlException 有错误代码,您可以在 DAL 中检查它,然后基于它抛出特定的异常。您的 DAL 将 SQL Server 抽象为后端存储,因此 SqlExceptions 不应泄漏到您的 DAL 之外。因此在 DAL 中检查 ErrorCode 并抛出特定异常。
关于c# - 处理sql异常的策略应该是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7782451/