捕获不可见线程的未处理异常

时间:2010-06-12 19:31:48

标签: c++ multithreading

在我的C ++应用程序中,我使用运行自己的线程的activeX组件(或者我不知道的几个)。有时这个组件会抛出异常。我想捕获这些异常并进行恢复,而不是整个应用程序崩溃。但由于我无法访问其源代码或线程,因此我不确定如何完成。

我能想到的唯一解决方案就是在自己的流程中运行它。使用CreateProcess和CreateRemoteThread之类的东西,不确定它是如何实现的。

关于如何解决这个问题的任何建议?

2 个答案:

答案 0 :(得分:2)

如果ActiveX组件正在启动自己的线程,那么您可以做很多事情。您可以设置一个全局异常处理程序并尝试吞下异常,但这很可能会导致程序状态损坏并导致奇怪的“不可能”崩溃。

在一个单独的进程中运行有缺陷的组件是最强大的解决方案,因为您将能够识别并从致命错误中恢复,而不会影响您自己的程序状态。

答案 1 :(得分:1)

尝试使用SetUnhandledExceptionFilter()设置异常过滤器。