我想在我的C++应用程序中嵌入Python。 我正在使用Boost库 - 一个很好的工具。 但我有一个问题。
如果Python函数引发异常,我想捕获它并在我的应用程序中打印错误或获取一些详细信息,例如导致错误的Python脚本中的行号。
我该怎么做? 我找不到任何在Python API或Boost中获取详细异常信息的函数。
try {
module=import("MyModule"); //this line will throw excetion if MyModule contains an error
} catch ( error_already_set const & ) {
//Here i can said that i have error, but i cant determine what caused an error
std::cout << "error!" << std::endl;
}
PyErr_Print()只是将错误文本打印到stderr,并清除该错误,因此它不能成为解决方案。
PyErr_Fetch()
返回对现有对象的引用,而不是分配新对象。不幸的是,用 C 语言知道这一点的唯一方法是阅读源代码,因为它很少有文档记录。这是 Rust 可以解决的问题之一。 - Timmmm