情况如下:线程A捕获了一个异常,在异常过滤器中使用GetExceptionInformation将异常数据保存在内存中,之后线程B获取该异常信息并想要重新抛出它。但问题是,当线程B重新抛出被捕获的异常时,我丢失了导致异常的原始调用堆栈。怎样才能重新抛出异常而不丢失原始的调用堆栈呢?(请注意,本问题涉及C++)。
问题是为什么需要将堆栈传递给“接收”线程。我认为您需要堆栈以便将其报告到某个错误日志中。您可以在捕获线程中遍历堆栈,或生成迷你转储,或收集所需的任何错误信息,然后只需将异常的副本(如果可能,请注意切片)传递给接收线程即可。