我应该在引发异常或处理异常的地方记录异常吗?

时间:2018-12-21 09:30:12

标签: logging exception-handling

说我有一个非常简单(尽管未完成)的课程:

public class WebSocketServer
{
    private TcpListener _listener;

    public WebSocketServer(IPAddress address, int port)
    {
        if (address == null)
        {
            throw new ArgumentNullException(nameof(address), "The address provided is invalid.");
        }
        if (port < 0 || port > 65535)
        {
            throw new ArgumentOutOfRangeException(nameof(port), port, "TCP ports must be between 0 and 65535.");
        }
        _listener = new TcpListener(address, port);
    }
}

,我想实现某种日志系统。像这样简单的事情开始于:

public static class Logging
    {
        private static ILogger currentLogger;
        public static void WriteLine(string message)
        {
            if (currentLogger == null) return;
            currentLogger.WriteLine($"[{DateTime.Now.ToString("dd.MM.yyyy|HH:mm")}] {message}");
        }

        public static void SetLogger(ILogger logger)
        {
            currentLogger = logger;
        }
    }

我应该在哪里记录我的例外情况?我应该在每个throw语句之前插入一行吗?还是应该让正在实现我的类的任何代码在处理异常时记录异常?

我知道这两种方法都可以正常工作(尽管无论处理如何,只有前者会记录日志),但是我想知道什么是最佳实践。

0 个答案:

没有答案