मुझे पता है कि अगर मैं एक अपवाद को फिर से उठाना चाहता हूं, तो मैं raiseसंबंधित exceptब्लॉक में तर्क के बिना सरल उपयोग करता हूं । लेकिन जैसे नेस्टेड एक्सप्रेशन दिया
try:
something()
except SomeError as e:
try:
plan_B()
except AlsoFailsError:
raise e # I'd like to raise the SomeError as if plan_B()
# didn't raise the AlsoFailsError
SomeErrorस्टैक ट्रेस को तोड़े बिना मैं फिर से कैसे उठा सकता हूं ? raiseअकेले इस मामले में और अधिक हाल ही में फिर से उठाना होगा AlsoFailsError। या मैं इस समस्या से बचने के लिए अपने कोड को कैसे रिफलेक्टर कर सकता हूं?
argऔर मैं कॉल करने की कोशिश करूंगा arg.plan_B()जो एक योजना बी प्रदान नहीं करने के AttributeErrorकारण हो सकता हैarg
plan_Bअपवादों को बढ़ाने की इजाजत है
plan_Bकिसी अन्य फ़ंक्शन में डालने की कोशिश की है जोTrueसफलता पर लौटा है, औरFalseअपवाद पर? तब बाहरीexceptब्लॉक बस हो सकता हैif not try_plan_B(): raise