내 C++ 응용 프로그램에 파이썬을 포함시키고 싶습니다. Boost 라이브러리 - 훌륭한 도구를 사용하고 있습니다. 하지만 한 가지 문제가 있습니다.파이썬 예외 텍스트를 얻는 방법
파이썬 함수가 예외를 throw하는 경우, 나는 그것을 잡아 내 응용 프로그램에서 오류를 인쇄하거나 python 스크립트에서 오류를 일으킨 줄 번호와 같은 자세한 정보를 얻고 싶습니다.
어떻게 할 수 있습니까? 파이썬 API 나 부스트에서 상세한 예외 정보를 얻기위한 함수를 찾을 수 없습니다.
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에 오류 텍스트를 인쇄하고 솔루션 파이썬 C API의
신난다, 이것은 내가 찾고 있었던 정확하게 것이다. .. 잘 작동한다. –
좋습니다. 내가 어떤 경우에 발견했다 (나를 위해 부스트; : 파이썬 :: 내 PYTHONPATH에없는 것의 import) ptraceback은 0이 될 것이므로 0이면 ptraceback의 사용으로부터 보호 할 것이다. 우리가 extype으로 할 수있는 것에 대해 논평 해주십시오. 나는 파이썬 예외 유형의 텍스트를 인쇄하는 것이의 L가 있다고 가정합니다. 어떻게해야합니까? –
또 하나의 질문 : 위에 메모리가 누출되지 않았습니까? PyErr_Fetch가 반환 한 객체를 해제하는 방법은 무엇입니까? (나는 CPython과 boost :: pythoon의 경우 모두에 대해 확신하지 못한다.) – elmo