我正在使用 swig 用 python 包装一个 C++ 库中的类。它总体上可以工作,但是从库中抛出了一个异常,我似乎无法在 swig 界面中捕获它,所以它只会使 python 应用程序崩溃!
PyMonitor.cc 类描述了所需类 Monitor 的 swig 接口。如果连接失败,Monitor 的构造函数会抛出异常。我想在 PyMonitor 中处理这个异常,例如:
PyMonitor.cc:
#include "Monitor.h"
// ...
bool PyMonitor::connect() {
try {
_monitor = new Monitor(_host, _calibration);
} catch (...) {
printf("oops!\n");
}
}
// ...
但是,connect() 方法永远不会捕获异常,我只是得到一个“在抛出 ... 后调用终止”错误,然后程序中止。
我对 swig 了解不多,但在我看来,这一切都很好 C++,异常应该在终止程序之前传播到 connect() 方法。
有什么想法吗?