2008-11-13 177 views

回答

2

在物理层边界。

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

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

1

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

最终用户可以是UI组件或服务或东西...

如果你在你的代码处理异常的地方 - 然后是最终用户,你应该有记录它。在大多数应用程序中,并且在大多数情况下,UI应该在向用户显示错误消息时记录它。

1

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

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

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