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

标签 c++ multithreading

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

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

关于如何解决这个问题有什么建议吗?

最佳答案

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

在单独的进程中运行错误组件是最可靠的解决方案,因为您将能够识别 fatal error 并从中恢复,而不会影响您自己的程序状态。

关于c++ - 捕获不可见线程的未处理异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3029860/

相关文章:

java - 如何在没有线程的情况下并行化?

arrays - 如何将 Swift 数组作为参数传递给线程?

c++ - 为什么不使用 Apache 在 CGI 中创建文件?

c++ - 将 float 转换为字符串

c# - 多线程调用委托(delegate)

c - 在同一个文件上同时以读取模式打开两个 FILE 句柄

c# - 如何在 C# 中实现一种机制,仅当前一个任务未在特定时间内完成时才启动任务?

c++ - 将 C++ vector 传递给方法导致未解析的外部

c++ - 如何将静态库链接到共享库

c# - C++/CLI 中的 System::IntPtr 到 int*