我应该在哪里记录例外?在数据服务层(ExecuteDataSet等)和/或数据访问层和/或业务层?
答案 0 :(得分:2)
在物理层边界。
也在客户端的顶级异常处理程序中。
即。如果您的业务层在服务器上运行,请在传播到客户端之前记录异常。如果您将业务层公开为WCF Web服务,这很容易,您可以实现一个错误处理程序,在将SOAP错误传播到客户端之前执行日志记录。
答案 1 :(得分:1)
如果要抛出异常,则应在发生异常时将其记录下来,然后将其冒泡。否则只有最终用户应该记录一个异常(当然你可能有很多跟踪,在这种情况下可能会记录很多)。
最终用户可能是UI组件或服务或其他东西......
如果您在某处处理代码中的异常 - 那么这是最终用户,您应该将其记录在那里。在大多数应用程序中,在大多数情况下,当UI向用户显示错误消息时,应由UI记录。
答案 2 :(得分:1)
我通常允许异常传播并在它们达到最高级别时记录它们。例如
main {
try {
application code
} catch {
preform logging
}
}
但这只对致命的例外有意义。其他例外我通常将它们记录在处理从所述异常中恢复的块中。