使用edge.js时捕获所有未处理的C#异常

时间:2014-06-06 18:32:07

标签: c# node.js edge.js

Edge.js允许我们从node.js调用C#dll。因此,我们的dll有许多切入点。我想捕获所有未处理的异常,以便我可以正确地记录它们然后将它们重新抛出到node.js(它们被处理的地方)。这可能吗?

使用无UI应用程序,我通常会通过以下方式执行此操作:

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服务器并通过edge.js调用ExceptionTest。在调试器中,CurrentDomain_UnhandledException中的断点未被命中,在调试器之外没有从该方法记录任何内容,“按要求记录测试以验证日志记录”。

0 个答案:

没有答案