पाने के लिए मैं अपने सी ++ आवेदन में अजगर एम्बेड करना चाहते हैं। मैं बूस्ट लाइब्रेरी का उपयोग कर रहा हूं - महान उपकरण। लेकिन मुझे एक समस्या है। अजगर समारोह एक अपवाद फेंकताकैसे अजगर अपवाद पाठ
हैं, तो मैं इसे और प्रिंट त्रुटि अपने आवेदन में पकड़ने के लिए या कि त्रुटि के कारण अजगर स्क्रिप्ट में लाइन नंबर जैसे कुछ विस्तृत जानकारी प्राप्त करना चाहते हैं।
मैं यह कैसे कर सकते हैं? मुझे पायथन एपीआई या बूस्ट में विस्तृत अपवाद जानकारी प्राप्त करने के लिए कोई फ़ंक्शन नहीं मिल रहा है।
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 करने के लिए त्रुटि पाठ प्रिंट और त्रुटि को साफ करता है तो यह समस्या का समाधान नहीं हो सकता है
बहुत बढ़िया, यह वही है जो मैं ढूंढ रहा हूं ... बहुत अच्छा काम करता है। –
यह अच्छा है। मैं कुछ मामलों में पता चला है (मेरे लिए, एक बढ़ावा;: अजगर :: कुछ के आयात नहीं मेरी PYTHONPATH में) ptraceback 0 हो जाएगा, तो मैं एक ptraceback के उपयोग के खिलाफ की रक्षा करता हूँ अगर यह 0. इसके अलावा है, कर सकते हैं इस बारे में टिप्पणी करें कि हम विस्तार के साथ क्या कर सकते हैं? मुझे लगता है कि पायथन अपवाद प्रकार के पाठ को सार्थक अर्थपूर्ण है। हम यह कैसे करे? –
एक अतिरिक्त प्रश्न: क्या हम उपर्युक्त स्मृति को लीक नहीं कर रहे हैं? PyErr_Fetch द्वारा लौटाई गई वस्तुओं को क्या मुक्त करता है? (मुझे सीपीथॉन और बूस्ट :: पायथन मामलों के बारे में निश्चित नहीं है) – elmo