gpt4 book ai didi

python - 如何捕获包含在 boost python 模块中的 C++ 代码中引发的 Python 异常

转载 作者:行者123 更新时间:2023-12-04 08:13:53 26 4
gpt4 key购买 nike

我将 C++ 代码包装在 boost python 模块中。
我的 C++ 代码是这样的:

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++ 代码中捕获此错误?

最佳答案

像这样:

boost::python::str bs;
try
{
bs = boost::python::str(s);
}
catch (const boost::python::::error_already_set&)
{
PyErr_Clear();
}
异常类型 error_already_set 没有可用信息- 之所以这样命名,是因为这意味着错误是在 Python 解释器状态中设置的。

关于python - 如何捕获包含在 boost python 模块中的 C++ 代码中引发的 Python 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65809583/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com