Używam biblioteki, która określa w dokumentach API definicję klasy odziedziczonej z określonej klasy biblioteki. Sama biblioteka jest napisana w C++, a powiązania z Pythonem są generowane za pomocą SWIG. Problem polega na tym, że gdy uruchamiam swój kod Pythona, niezależnie od tego, jaki wyjątek rzuca Python, pojawia się komunikat "zakończ połączenie wywołane po wyrzuceniu instancji" Swig :: DirectorMethodException "".SWIG: Zgłaszanie wyjątków w języku Python z kodu C++
Chciałbym, aby ten wyjątek został podniesiony przez kod Pythona do zgłaszania podczas wykonywania mojego programu. Esp, te przypadki, w których otrzymuję ZeroDivisionError.
Próbowałem nieco zhakować, stosując metodę opisaną w dokumentacji SWIG pod numerem http://www.swig.org/Doc2.0/Python.html#Python_nn36, ale bez powodzenia. Nadal dostaję ten sam komunikat "zakończyć wywołanie po wyrzuceniu instancji" Swig :: DirectorMethodException "" bez względu na to, co umieściłem w pliku module.i.
Czy ktoś może mi podać wskazówki, jak rozwiązać ten problem, aby wyjątki Python były zgłaszane tak jak są?
Dzięki za pomoc. Naprawiłem ten problem i poprawka jest tutaj: https://github.com/madhusudancs/mesos/commit/93ed9f32d8752d687d6b6af6bcb6bfdf815f115d To było dość proste, ale zdecydowanie nie jest dobrze udokumentowane. Nie jest to także mój projekt, więc mogę tylko zaproponować programistom użycie boost :: python, ale nie mogę tego zrobić, chociaż –
Pomyślałem, że SWIG jest obowiązkowy; Chciałem opuścić opcję zwiększania dla osób, które natknęły się na to pytanie jak ja :). A teraz mają też SWIG. – ginbot