gpt4 book ai didi

python - boost python 错误消息 :terminate called after throwing an instance of 'boost::python::error_already_set'

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:51:59 26 4
gpt4 key购买 nike

我有一个 main.py,我用 C++ 加载并运行

void runscript ( std::string script )
{
try {
PyRun_SimpleStringFlags ( script.c_str() ,NULL );
}
catch ( const boost::python::error_already_set& ) {
std::cout<<"test error"<<std::endl;
}
}

main.py 有一行:

import test

(这是test.py)
位于 main.py 中的同一文件夹中。当 test.py 出现错误时,我无法缓存我收到的错误,应用程序崩溃:

在抛出“boost::python::error_already_set”实例后调用终止

有没有办法缓存哪个文件或哪一行出错?

最佳答案

您可以使用 evalexec (doc reference)。

try {
bp::exec(script);
}
catch (bp::error_already_set) {
}

真正的问题是从异常对象中获取错误信息。

通过 catch block 中的 PyErr_Print() 将异常打印到标准输出很容易,但是如果您需要更复杂的分析,代码会变得很麻烦。

catch block 中,您必须通过PyErr_Fetch 获取异常信息。 , 通过 PyErr_NormalizeException 归一化比如说,通过遍历回溯对象来分析调用堆栈。

关于python - boost python 错误消息 :terminate called after throwing an instance of 'boost::python::error_already_set' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26902619/

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