我们在c++代码中遇到了一个问题。当抛出异常时
进程将终止,但是我的代码具有适当的异常
处理。

   Core stack is below.
   ======================
   #0  0xffffe410 in __kernel_vsyscall ()
   #1  0x00489915 in raise () from /lib/tls/libc.so.6
   #2  0x0048b379 in abort () from /lib/tls/libc.so.6
   #3  0xf6a1fbdb in __gnu_cxx::__verbose_terminate_handler () from /usr/lib/libstdc++.so.6
   #4  0xf6a1d8f1 in __cxa_call_unexpected () from /usr/lib/libstdc++.so.6
   #5  0xf6a1d926 in std::terminate () from /usr/lib/libstdc++.so.6
   #6  0xf6a1da6f in __cxa_throw () from /usr/lib/libstdc++.so.6

一些论坛显示在处理其他异常时,当堆栈展开或出现异常时,可能会发生这种情况。

您能在这里提出解决问题的建议吗?

最佳答案

在以下情况下可以调用终止:

  • 另一个异常正在传播
  • 时引发异常
  • 引发了一个异常,该异常违反了异常规范
  • 引发异常,但从未捕获到

  • 但是您的调用堆栈也有unexpected => __cxa_call_unexpected ()
    对我来说,这表明异常规范已被违反。
    这将调用unexpected(),默认情况下会调用terminate()。

    关于c++ - C++异常处理导致终止,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7871854/

    10-13 08:27
    查看更多