c# - 数据访问层的异常处理策略

标签 c# .net exception data-access-layer

我正在构建一个数据访问层,它将用于两种类型的应用程序。

  1. 不关心错误细节的应用程序。如果发生异常,那么很可能只会被记录下来,而用户可能没有意识到。

    示例:简单的条形码盘点应用程序。用户输入条形码,如果数据库连接可用,则系统会提供一些额外信息,如果没有,则仅在本地记录条形码。在这种情况下,我不需要详细的异常处理。

  2. 我非常关心异常细节的应用程序。

在构建 DAL 时我必须遵循什么策略才能适应这两个类别?

现在我正在从第一个类别构建一个应用程序,我在 DAL 方法中所做的就是让异常冒泡到表示层,在那里我有几个 try..catch 阻止以便简单地处理日志记录,让用户察觉不到错误。

最佳答案

错误处理就是从代码中已知的部分获取信息给需要知道的人。 DAL 知道如何清晰地打印 SqlException、SqlCommand 和 SqlParameters 集合等的跟踪。但 UI 知道导致异常的整个调用堆栈。用户可能不知道如何处理这些信息,因此您应该登录到单独的 channel ,例如向开发人员发送电子邮件或登录数据库。

如果您正在编写错误记录器,我还建议使用一个真实的应用程序(或几个真实的应用程序)作为您的库的测试。例如,您可以将错误记录器连接到 Codeplex 上的各种应用程序,看看排除错误时的痛点,或者尝试进行测试并使用错误记录器在您自己的库中记录错误。

关于c# - 数据访问层的异常处理策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13691769/

相关文章:

.net - IronPython 中的代理对象

python 从 if 语句和 try-except 调用自定义异常

c# - 模型在 XNA 中显示为黑色

c# - 从网页调用 DELETE restful 方法的最佳做法是什么?

c# - 至少一个对象必须在 datasourceresult 上实现 icomparable

c# - 如何生成所有可能的单词

c# - 通过 EWS 和 C# 访问没有邮箱的资源日历

c# - Mono 上的 Uri.MakeRelativeUri 行为

c++ - 如何保存异常并稍后抛出

java - UIMA RUTA 中的数组 IndexOutOfBound 异常