के भीतर से अपवाद दोबारा असाइन करें एक कस्टम कर्सर वर्ग में __exit__
ब्लॉक के भीतर से मैं अपवाद पकड़ना चाहता हूं ताकि मैं एक और विशिष्ट अपवाद फेंक सकूं। ऐसा करने का सही तरीका क्या है?एक अजगर __exit__ ब्लॉक
class Cursor:
def __enter__(self):
...
def __exit__(self, ex_type, ex_val, tb):
if ex_type == VagueThirdPartyError:
# get new more specific error based on error code in ex_val and
# return that one in its place.
return False # ?
else:
return False
__exit__
ब्लॉक के भीतर विशिष्ट अपवाद स्थापना एक हैक की तरह लगता है, लेकिन शायद मैं इसे सोच से अधिक रहा हूँ।
यह अपवाद को बढ़ाने के लिए हैक की तरह क्यों लगता है? – NPE
मैंने सोचा कि ऐसा करने का दूसरा तरीका हो सकता है क्योंकि संदर्भ प्रबंधक मुख्य ब्लॉक के भीतर किसी भी अपवाद को पकड़ता है, इसे संग्रहीत करता है, और उसके बाद उसे स्वीकृति देने या veto करने के लिए __exit__ तक भेजता है। __exit__ के भीतर बढ़ना प्रतीत होता है कि यह इसके तर्कों के आधार पर अपनी जिम्मेदारियों का विस्तार होगा - लेकिन मैं इसे सोचने पर स्पष्ट रूप से था। – jpredham