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