Должен ли я регистрировать исключения, где они выбрасываются или где они обрабатываются? - PullRequest
0 голосов
/ 21 декабря 2018

Скажем, у меня был очень простой (хотя и незаконченный) класс:

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 или разрешать любому коду, реализующему мой класс, регистрировать исключения, когда они их обрабатывают?

Я знаю, что оба подхода работают нормально (хотя только первый будет регистрироваться независимообработки), но мне интересно, что считается лучшей практикой.

...