【问题标题】:Log Errors in DAL or Service LayerDAL 或服务层中的日志错误
【发布时间】:2014-02-26 11:33:29
【问题描述】:

我有一个带有 DAL 和服务层(WCF Rest)的应用程序。使用IErrorHandler 在服务层中出现错误。

在 DAL 层中,我在所有方法中使用 try catch,并将错误记录到 catch 中的文本文件中。之后我使用 throw 抛出错误。

我的 DAL 层方法如下

public DataTable Method1()
{
    DataSet dsData = null;
    try
    {
            //code to get the data
    }
    catch (Exception ex)
    {
        dbManager.WriteErrorLog(module, MethodBase.GetCurrentMethod().Name, ex.Message);
        throw;
    }
    return dsData.Tables[0];
}

在 catch 中,我使用了一个名为 WriteErrorLog 的通用方法将异常写入文本文件。

我的困惑是我们已经在服务层处理了错误。所以我可以避免在我的 DAL 中使用 try .. catch 吗?还是现有的 DAL 是好的做法?

【问题讨论】:

    标签: c# wcf exception-handling layer


    【解决方案1】:

    好吧,您并没有真正处理异常,因为您正在重新抛出异常并将其冒泡到服务层,如果您想记录数据访问层中发生的异常,这正是您想要做的。

    因此,您正在做的正是需要做的事情,这确实是一个好习惯:

    1. 日志错误
    2. 不在应用系统的较低层处理异常
    3. 让前端/消费应用程序处理异常和/或错误

    【讨论】:

    • 对不起。我没明白你在说什么。对于日志记录,我可以在 HandleError 中添加日志记录。所以我可以避免 DAL try..catch。第2点请澄清
    • 概述的所有要点都非常抽象...基本上,您可以将错误记录移至服务层,让 DAL 将异常冒泡到消费代码。这样,您将通过不在架构的较低层添加异常处理逻辑来获得性能。这是一种非常常见且值得推荐的方法
    猜你喜欢
    • 2012-04-12
    • 2015-05-08
    • 2010-11-28
    • 2015-08-16
    • 1970-01-01
    • 2021-03-30
    • 1970-01-01
    • 2012-02-26
    • 1970-01-01
    相关资源
    最近更新 更多