繁体   English   中英

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

[英]How to catch Python exception thrown in C++ code wrapped in a boost python module

我有 C++ 代码包装在升压 python 模块中。

我的 C++ 代码执行以下操作:

char s[2];
s[0] = (char) 160;
s[1] = '\0';
boost::python::str bs = boost::python::str(s);

即,它尝试从包含不可打印字符(值 160)的 C 字符串创建提升 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 解释器 state 中设置的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM