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