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