记录位置

时间:2008-11-13 20:31:29

标签: exception logging

我应该在哪里记录例外?在数据服务层(ExecuteDataSet等)和/或数据访问层和/或业务层?

3 个答案:

答案 0 :(得分:2)

在物理层边界。

也在客户端的顶级异常处理程序中。

即。如果您的业务层在服务器上运行,请在传播到客户端之前记录异常。如果您将业务层公开为WCF Web服务,这很容易,您可以实现一个错误处理程序,在将SOAP错误传播到客户端之前执行日志记录。

答案 1 :(得分:1)

如果要抛出异常,则应在发生异常时将其记录下来,然后将其冒泡。否则只有最终用户应该记录一个异常(当然你可能有很多跟踪,在这种情况下可能会记录很多)。

最终用户可能是UI组件或服务或其他东西......

如果您在某处处理代码中的异常 - 那么这是最终用户,您应该将其记录在那里。在大多数应用程序中,在大多数情况下,当UI向用户显示错误消息时,应由UI记录。

答案 2 :(得分:1)

我通常允许异常传播并在它们达到最高级别时记录它们。例如

main {
    try {
        application code
    } catch {
        preform logging
    }
}

但这只对致命的例外有意义。其他例外我通常将它们记录在处理从所述异常中恢复的块中。