Поймать все необработанные исключения C# при использовании edge.js
Edge.js позволяет нам звонить в C# dll из node.js. Из-за этого у нас есть много точек входа в наши библиотеки. Я хотел бы перехватить все необработанные исключения, чтобы я мог правильно их записать в журнал, а затем перебросить их обратно в node.js (где они рассматриваются). Это возможно?
С приложением без пользовательского интерфейса я бы обычно делал это через:
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
К сожалению CurrentDomain_UnhandledException
обработчик никогда не срабатывает при вызове исключения.
Обновление с дополнительной информацией:
Вот то, к чему сводится код C# для этого теста:
static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
Logger.Error("Unhandled Exception caught - rethrown.", (Exception)e.ExceptionObject);
throw (Exception)e.ExceptionObject;
}
public async Task<object> ExceptionTest(object input)
{
return await Task.Run<object>(() =>
{
Logger.Error("Test to verify logging");
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
throw new Exception("Test Exception");
return null;
});
}
Сервер node.js запускается и вызывает ExceptionTest через edge.js. В отладчике точка останова в CurrentDomain_UnhandledException
не ударил, за пределами отладчика ничего не регистрируется из этого метода, "Тест для проверки ведения журнала" записывается как ожидалось.