1

虽然毫无疑问记录器不应该导致应用程序崩溃,但当我修复公司记录器的错误时,我不确定如何正确地处理由记录框架本身引发的异常。在元代码中:

public void write(TMessage message)
{
    try
    {
        writeUnsafely(message);
    }
    catch(Exception loggingException)
    {
        // what should I do here?
    }
}

我应该忽略 loggingException(就像 log4net 一样)还是应该让客户端代码选择如何处理它(也许使用可配置的处理程序)?

4

2 回答 2

2

这完全取决于你,但无论你决定什么,都要记录下来。除了增加代码和用户的复杂性之外,我认为使其可配置并没有什么坏处。

相反,您可以只编写没有错误且从不抛出任何异常的完美代码。;-)

于 2013-04-15T20:21:28.753 回答
1

NLog 有一个配置选项,允许将日志记录配置为抛出异常(或不抛出异常):

https://github.com/nlog/nlog/wiki/Configuration-file

(请参阅故障排除日志记录部分)。

似乎给客户端代码一个处理它的机会是一个合理的选择。关于客户端程序应如何处理异常的建议最好包含在您的文档中(如果您选择实现此类功能)。一个示例可能类似于“您可以在应用程序的未处理异常处理程序中捕获 LoggingException”。

于 2013-04-15T20:25:27.807 回答