首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何捕获在boost Python模块中包装的C++代码中抛出的python异常

如何捕获在boost Python模块中包装的C++代码中抛出的python异常
EN

Stack Overflow用户
提问于 2021-01-20 20:29:04
回答 1查看 45关注 0票数 2

我将C++代码包装在一个boost python模块中。

我的C++代码如下所示:

代码语言:javascript
运行
复制
char s[2];
s[0] = (char) 160;
s[1] = '\0';
boost::python::str bs = boost::python::str(s);

即,它试图从包含不可打印字符(值160)的C字符串创建boost Python字符串。

当我从Python脚本运行这段代码时,我得到这个错误:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa0 in position 11: invalid start byte

其出现在值0xa0 (= 160)不能被解码时。

如何在C++代码中捕获此错误?

EN

回答 1

Stack Overflow用户

发布于 2021-01-20 20:34:41

如下所示:

代码语言:javascript
运行
复制
boost::python::str bs;
try
{
    bs = boost::python::str(s);
}
catch (const boost::python::::error_already_set&)
{
    PyErr_Clear();
}

异常类型error_already_set没有可用的信息-它以这种方式命名,因为这意味着错误是在Python解释器状态中设置的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65809583

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档