【发布时间】:2017-03-21 08:33:09
【问题描述】:
我在一个多线程应用程序中发生了崩溃,无论出于何种原因,我都无法在堆栈部分展开之前捕获异常。
所以现在我试图通过连接 gdb 并使用 catch throw 来捕捉它。但是,我得到了许多其他不相关和捕获的异常。我怎么能忽略这些?
我尝试了ignore 1 1000000,但这并不会只忽略当前关注的异常,而是会忽略所有catch throw 异常。
有什么想法可以让我只忽略那个特定的吗?例如可能是文件和行号?
【问题讨论】:
-
如果你使用 C++11,你必须学习如何使用
std::packaged_task,然后从该任务中获取std::future,这会将你的所有异常转发到主线程。您的线程必须是异常安全的,否则它只是一个糟糕的设计。std::future优雅地解决了这个问题。