मैं वर्तमान में Boost.Python का उपयोग कर पाइथन के लिए एक C++ एक्सटेंशन लिख रहा हूं। इस एक्सटेंशन में एक फ़ंक्शन एक अपवाद उत्पन्न कर सकता है जिसमें त्रुटि के बारे में जानकारी शामिल है (केवल मानव-पठनीय स्ट्रिंग से परे जो वर्णन हुआ)। मैं उम्मीद कर रहा था कि मैं इस अपवाद को पायथन में निर्यात कर सकता हूं ताकि मैं इसे पकड़ सकूं और अतिरिक्त जानकारी के साथ कुछ कर सकूं।बढ़ावा :: पायथन निर्यात कस्टम अपवाद
उदाहरण के लिए:
import my_cpp_module
try:
my_cpp_module.my_cpp_function()
except my_cpp_module.MyCPPException, e:
print e.my_extra_data
दुर्भाग्य Boost.Python RuntimeError
में सभी सी ++ अपवाद (कि std::exception
की उपवर्गों कर रहे हैं) अनुवाद करने के लिए लगता है। मुझे एहसास है कि बूस्ट। पायथन एक कस्टम अपवाद अनुवाद को लागू करने की अनुमति देता है, हालांकि, PyErr_SetObject
का उपयोग करने की आवश्यकता है जो PyObject*
(अपवाद के प्रकार के लिए) और PyObject*
(अपवाद के मूल्य के लिए) लेता है - जिसमें से मुझे पता नहीं है कि कैसे प्राप्त किया जाए मेरे बूस्ट। पायथन कक्षाएं। शायद एक रास्ता है (जो बहुत अच्छा होगा) कि मैं अभी तक नहीं मिला है। अन्यथा क्या कोई कस्टम सी ++ अपवाद निर्यात करने के बारे में जानता है ताकि मैं इसे पायथन में पकड़ सकूं?
** अच्छा प्रश्न और उत्तर! ** यह मेरा दिन बचाया! धन्यवाद। –
बढ़िया! यहां भी बहुत उपयोगी! अगर मैं कर सकता तो मैं 5x वोट करूँगा :) –