c++内嵌python脚本,boost::python::error_already_set
时间:2011-12-27
来源:互联网
话不多说代码直接贴上
int main()
{
Py_Initialize();
//引入__main__ 作用域
object main_module = import("__main__");
object main_namespace = main_module.attr("__dict__");
try
{
std::cout<<"will -1 end"<<std::endl;
object simple = exec_file("simple.py",main_namespace, main_namespace);
std::cout<<"will 0 end"<<std::endl;
object serverInfo = main_namespace["serverInfo"];
std::cout<<"will 1 end"<<std::endl;
std::string ipStr = extract<std::string>(serverInfo("Server","ip"));
std::cout<<"will 2 end"<<std::endl;
std::cout << "Python get ip: " << ipStr <<std::endl;
}
catch (boost::python::error_already_set)
{
PyErr_Print();
boost::python::object sys(
boost::python::handle<>(PyImport_ImportModule("sys"))
);
boost::python::object err = sys.attr("stderr");
std::string err_text = boost::python::extract<std::string>(err.attr("getvalue")());
}
return 0;
}
如果simple.py脚本内有语法错误的话, 会抛出异常, 异常信息打印出来了。但是程序是会崩溃(terminate called after throwing an instance of 'boost::python::error_already_set', 已放弃), 如何让程序不崩溃呢?就是说脚本有错误时不要让c++程序宕掉。有哪位混合编程高手讲解下。
int main()
{
Py_Initialize();
//引入__main__ 作用域
object main_module = import("__main__");
object main_namespace = main_module.attr("__dict__");
try
{
std::cout<<"will -1 end"<<std::endl;
object simple = exec_file("simple.py",main_namespace, main_namespace);
std::cout<<"will 0 end"<<std::endl;
object serverInfo = main_namespace["serverInfo"];
std::cout<<"will 1 end"<<std::endl;
std::string ipStr = extract<std::string>(serverInfo("Server","ip"));
std::cout<<"will 2 end"<<std::endl;
std::cout << "Python get ip: " << ipStr <<std::endl;
}
catch (boost::python::error_already_set)
{
PyErr_Print();
boost::python::object sys(
boost::python::handle<>(PyImport_ImportModule("sys"))
);
boost::python::object err = sys.attr("stderr");
std::string err_text = boost::python::extract<std::string>(err.attr("getvalue")());
}
return 0;
}
如果simple.py脚本内有语法错误的话, 会抛出异常, 异常信息打印出来了。但是程序是会崩溃(terminate called after throwing an instance of 'boost::python::error_already_set', 已放弃), 如何让程序不崩溃呢?就是说脚本有错误时不要让c++程序宕掉。有哪位混合编程高手讲解下。
作者: yusui09 发布时间: 2011-12-27
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28