【问题标题】:boost-python unable to catch and translate c++ exceptionboost-python 无法捕获和翻译 c++ 异常
【发布时间】:2015-07-31 23:42:53
【问题描述】:

boost-python 不能捕获在使用它的帮助编写的扩展模块中抛出的异常并将其转换为 python 的原因可能是什么?相反,解释器会因terminate called after throwing an instance of '<some_excpetion_class>' 而崩溃。

我的扩展模块正在使用 CGAL 中的一些函数,它动态链接到这些函数,并引发异常。它还动态链接到 boost_python 共享库。我在linux上。它是用'-std=c++11' 编写的,我更喜欢用clang 编译。

我的第一个想法是,这是跨共享库边界抛出异常的问题。但是,我尽我所能来规避这个问题,暗示它与此无关:

  • 异常翻译适用于我的代码引发的其他异常
  • 我尝试使用 clang 3.4 和 gcc 4.8.2 进行编译
  • 抛出的代码是来自 CGAL 的标头,位于失败的断言宏中,该宏调用了 CGAL 共享库中的失败函数 info。但是,重新定义该宏以使其从扩展模块中引发并没有帮助,这与异常类是否来自 CGAL 或 std::exception 或 boost::exception 子类无关。

有什么想法吗?

【问题讨论】:

    标签: python c++ exception boost boost-python


    【解决方案1】:

    找到原因了,和boost-python和共享库都没有关系:

    CGAL 代码从析构函数中抛出,导致程序终止。另见:throwing exceptions out of a destructor

    【讨论】:

      猜你喜欢
      • 2018-04-15
      • 1970-01-01
      • 1970-01-01
      • 2014-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多