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