我想在我的C++應用程序中嵌入蟒蛇。我正在使用Boost庫 - 很棒的工具。但我有一個問題。如何獲得Python異常文本
如果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並清除錯誤,以便它不能溶液
太棒了,這正是我一直在尋找的......非常棒的作品。 – 2011-01-04 01:44:55
這很好。我在某些情況下發現的(對我來說,升壓;:蟒蛇::的進口的東西不是在我的PYTHONPATH)ptraceback爲0,所以我會保護免受ptraceback的使用,如果它是0。此外,你可以評論我們可以用extype做什麼?我想打印python異常類型的文本是有意義的。我們如何做到這一點? – 2014-03-06 17:18:32
還有一個問題:我們不是在上面泄漏記憶嗎?什麼釋放由PyErr_Fetch返回的對象? (我不確定CPython和boost :: pythoon的情況) – elmo 2014-04-10 08:41:38