虽然毫无疑问记录器不应该导致应用程序崩溃,但是当我修复我的公司记录器时,我不确定如何正确地吞下日志框架本身抛出的异常。在元代码中:
public void write(TMessage message)
{
try
{
writeUnsafely(message);
}
catch(Exception loggingException)
{
// what should I do here?
}
}
我应该忽略loggingException(就像log4net那样),还是应该让客户端代码选择如何处理它(可能使用可配置的处理程序)?
答案 0 :(得分:2)
这完全取决于你,但无论你决定如何,都要记录下来。除了在代码和用户中增加复杂性之外,我认为使其可配置无害。
您可以改为编写没有错误且不会抛出任何异常的完美代码。 ;-)
答案 1 :(得分:1)
NLog有一个配置选项,允许将日志配置为抛出异常(或不抛出异常):
https://github.com/nlog/nlog/wiki/Configuration-file
(请参阅“记录疑难解答”部分)。
似乎给客户端代码一个处理它的机会是一个合理的选择。关于客户端程序应如何处理异常的建议可能包含在您的文档中(如果您选择实现此类功能)。一个例子可能是"您可以在应用程序的未处理异常处理程序中捕获LoggingException。"