繁体   English   中英

boost-python无法捕获和翻译c ++异常

[英]boost-python unable to catch and translate c++ exception

为什么boost-python无法捕获使用其帮助编写的扩展模块中引发的异常并将其转换为python? 相反,解释器会terminate called after throwing an instance of '<some_excpetion_class>'崩溃并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的标头,位于失败的断言宏中,该宏在info的CGAL共享库中调用失败函数。 但是,如果异常类来自CGAL或std :: exception或boost :: exception子类,则重新定义该宏以使其从扩展模块中引发就没有帮助。

有什么想法吗?

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

从析构函数抛出CGAL代码,这导致程序终止。 另请参阅: 从析构函数中抛出异常

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM