1

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没有命中断点,在调试器之外,该方法没有记录任何内容,“测试以验证日志记录”按预期记录。

4

0 回答 0