Python:指的是在扩展Modu中用PyErr\u NewException创建的异常类

2024-06-28 20:48:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在创建自己的Python扩展(使用SWIG,但我希望这与此无关)。在

在C++的一部分中,我使用PyrReNeExExt创建自定义异常对象。在

// C++ - create a custom Python Exception class.

m = Py_InitModule((char *) "MyModule", SwigMethods);
g_pyMyErr = PyErr_NewException( "MyModule.MyErr", 0, 0 );
Py_INCREF(g_pyMyErr);
int result = PyModule_AddObject(m, "MyErr", g_pyMyErr);

上面的代码返回success值,我可以成功地抛出上面的异常并在Python客户机代码中捕获它。在

问题是:当我在Python代码中提到“MyErr”时,我得到一个错误,说“MyErr”没有定义。在

^{pr2}$

编辑:我目前的想法是,斯威格可能正在改变(弄乱)事物的名称。在


Tags: 对象代码pycreatecustomexceptionclassswig
1条回答
网友
1楼 · 发布于 2024-06-28 20:48:56

您需要定义错误,然后:

%{
  class MyErr {};
%}

另外,我建议添加此项,以便您可以将异常捕获为我的模块.myer而不是我的模块_我的模块.myer(因为SWIG就是这样生成它们的):

^{pr2}$

相关问题 更多 >