[英]SWIG: Throwing exceptions from Python to C++
我們有一個用C ++定義的接口(抽象類,所有函數都是純虛擬的),它將在Python中進行擴展。 為了克服跨語言多態性問題,我們計划使用SWIG Director 。 我已經在這里 , 這里 , 這里甚至在SO上閱讀了如何捕獲我們的Python代碼中C ++代碼引發的異常的信息。
這是相當簡單的,我不期望處理我們庫的異常問題。 我想知道並且似乎無法在文檔中找到的是如何使擴展的C ++接口的Python實現以使它們對C ++代碼可見的方式拋出這些C ++異常。
我們可以在* .i文件中制作一些小的函數,以便每個函數都拋出我們的異常:
void throw_myException(){ throw MyException; }
但我想知道它將如何與Python代碼進行交互。
任何人都有從Python代碼引發C ++異常的經驗嗎?
(C)Python是用C編寫的。“通過”解釋器拋出異常似乎很糟糕。
我的感覺是,從可以通過工廠創建異常的API返回某種令牌可能是最安全的。
盡管我們使用C#而不是Python來生成“錯誤代碼”數據,然后將其轉換為C ++層,然后發送給異常工廠,但這基本上就是我們在這里所做的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.