c# - 处理sql异常的策略应该是什么?

标签 c# .net exception

我有一个多层应用程序。 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/

相关文章:

c# - SQL语法错误: Remove/Disclude Apostrophe's?

.net - 作为服务登录与作为批处理作业登录

c# - C# 中值类型的通用类型约束

c# - 3 层应用程序的异常捕获最佳实践

java - 使用异常来通知用户名是否可用

c# - 矩形c#中的单词

c# - 在 C# Visual Studio 中使用像按钮一样的文本框或标签

java - 替换 Arraylist 中的空值

C# 变量数组

C# 将文件上传到 azure blob 存储中的文件夹中