+ -
当前位置:首页 → 问答吧 → c++内嵌python脚本,boost::python::error_already_set

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++程序宕掉。有哪位混合编程高手讲解下。


作者: yusui09   发布时间: 2011-12-27

热门下载

更多