Ситуация, когда метод пытается зарегистрировать пользовательское исключение (пользовательский класс исключений в качестве примера кода), вызывает проблему:
[Serializable]
public class CustomException : Exception
{
public CustomException() { }
public CustomException(string message) : base(message) { }
public CustomException(string message, Exception inner) : base(message, inner) { }
protected CustomException(
System.Runtime.Serialization.SerializationInfo info,
System.Runtime.Serialization.StreamingContext context)
: base(info, context) { }
}
Создание исключения:
CustomException ex = new CustomException("Here is a new custom exception! ");
LogError(ex);
Метод регистрации исключений (пользовательских и других!):
public static void LogError(Exception ex)
{
//Saving exception messages, inner exceptions etc
//...
}
В этом случае ex.Stacktrace пользовательского исключения является нулевым при его регистрации!
Я считаю, что причина в том, что метод ведения журнала (который пытается быть методом общего назначения) принимает объект Exception в качестве параметра, а не CustomException (?). Как правильно создать метод ведения журнала, поскольку его перегрузка различными типами исключений кажется немного нелогичной?