Поймать все необработанные исключения 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 не ударил, за пределами отладчика ничего не регистрируется из этого метода, "Тест для проверки ведения журнала" записывается как ожидалось.

0 ответов

Другие вопросы по тегам