swig を使用して、C++ ライブラリのクラスを python でラップしています。それは全体的に機能しますが、ライブラリ内からスローされる例外があり、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()メソッドに伝播するはずです。
何かご意見は?