我们已经在C++中定义了一个接口(抽象类,所有函数都是纯虚拟的),它将在Python语言中扩展。为了克服跨语言的多态性问题,我们计划使用SWIG directors。我已经阅读了如何在我们的C++代码here、here、here甚至在SO上捕获从Python代码抛出的异常。
这是相当直接的,我不希望在处理我们的库自己的异常时出现问题。我想知道但在文档中似乎找不到的是,如何让我们的扩展C++接口的Python实现抛出那些C++异常,使它们对C++代码可见。
我们可以在*.i文件中创建小函数,这样每个函数都会抛出我们的异常:
void throw_myException(){ throw MyException; }但我想知道它将如何与Python代码交互。
谁有从Python代码中抛出C++异常的经验?
发布于 2010-05-22 05:53:34
( C )Python是用C编写的。似乎“通过”解释器抛出异常是不好的。
我的感觉是,从API返回某种可以通过工厂创建异常的令牌可能是最安全的。
这基本上就是我们在这里所做的,尽管我们使用C#而不是Python来生成“错误代码”数据,然后将其转换到C++层,然后发送到异常工厂。
https://stackoverflow.com/questions/2884797
复制相似问题