Python中文
首页
教程
问答
标签
搜索
登录
注册
Pyr_SetString不立即引发异常(Swig)?
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我使用SWIG将一个C-lib包装到python模块。但例外似乎并不是在正确的地方提出的,我有一个简单的演示</p> <p><strong>除了测试。i</strong></p> <pre><code>%module except_test %{ #include "except_test.h" #include <stdio.h> %} %{ static int flagged_exception = 0; void throw_except() { flagged_exception = 1; printf("flag set \n"); } %} %exception { $action printf("exception block\n"); if (flagged_exception) { printf("before setstring\n"); PyErr_SetString(PyExc_RuntimeError, "test except"); printf("after setstring\n"); flagged_exception = 0; } } %include "except_test.h" </code></pre> <p><strong>除测试c外</strong></p> ^{pr2}$ <p><strong>快跑_除了.py</strong></p> <pre><code>from except_test import * import time def test(): b = except_test(-1) print 'b=', b try: test() except: print "caught exception" for i in range(10): print i time.sleep(1) </code></pre> <p>如果我跑的话_除了.py在</p> <pre><code>$python run_except.py flag set exception block before setstring after setstring b= 0 0 Traceback (most recent call last): File "run_except.py", line 15, in <module> time.sleep(1) RuntimeError: test except </code></pre> <p>如输出所示,try/catch块没有捕捉到异常。 为什么会这样?如何避免呢?在</p> <p>谢谢</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>您需要将<code>SWIG_fail;</code>放在<code>PyErr_SetString</code>之后。另外,还有一个方便的(更重要的是独立于语言的)宏<code>SWIG_exception(SWIG_RuntimeError, "error message")</code>包装{<cd2>}和{<cd5>}。在</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
无法使用Django/mongoengine连接到MongoDB(身份验证失败)
3 回答
无法使用Django\u mssql\u后端迁移到外部hos
5 回答
无法使用Django&Python3.4连接到MySql
2 回答
无法使用Django+nginx上载媒体文件
4 回答
无法使用Django1.6导入名称模式
6 回答
无法使用Django1.7和mongodb登录管理站点
7 回答
无法使用Djangoadmin创建项目,进程使用了错误的路径,因为我事先安装了错误的Python
6 回答
无法使用Djangockedi验证CBV中的字段
7 回答
无法使用Djangocketditor上载图像(错误400)
9 回答
无法使用Djangocron进行函数调用
3 回答
无法使用Djangofiler djang上载文件
5 回答
无法使用Djangokronos
3 回答
无法使用Djangomssql provid
3 回答
无法使用Djangomssql连接到带有Django 1.11的MS SQL Server 2016
1 回答
无法使用Djangomssq迁移Django数据库
10 回答
无法使用Djangonox创建用户
1 回答
无法使用Djangopyodb从Django查询SQL Server
7 回答
无法使用Djangopython3ldap连接到ldap
2 回答
无法使用Djangoredis连接到redis
4 回答
无法使用Django中的FK创建新表
3 回答