Я создал консольное приложение, которое успешно регистрирует сообщения при первом входе в систему с Main()
. То, что я хотел бы сделать, это настроить обработчик для обработки всех необработанных исключений:NLog - Занесение сложности при привязке к UnhandledExceptionEventHandler
class Program
{
private static Logger logger = LogManager.GetCurrentClassLogger();
static void Main(string[] args)
{
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
throw new ApplicationException("Throwing an unhandled exception!"); //This line keeps getting hit
Console.ReadLine();
}
private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
var exc = (Exception)e.ExceptionObject;
logger.ErrorException("Another exception occured!", exc);
}
}
Это приложение никогда не выгружается, и я пытаюсь выяснить, почему. Он бросает мой ApplicationException
, а затем выполняется CurrentDomain_UnhandledException()
, но затем отладчик возвращается к строке: throw new ApplicationException()
. CurrentDomain_UnhandledException()
выполняется снова, а затем я зациклился на линии, бросая исключение в бесконечность и дальше.
И хотя вызывается logger.ErrorException()
, ничего не записывается в базу данных.