मैं एक स्थिति है जहाँ मैं एक विशिष्ट अपवाद प्रकार पकड़ने कर रहा हूँ अगर यह वास्तव में एक अपवाद मैं पकड़ने के लिए चाहते हैं की जाँच करने के अपवाद के संदेश का निरीक्षण, और फिर अपवाद नहीं तो फिर से ऊपर उठाने मिल गया है:पायथन में, मैं मूल कॉल स्टैक को बनाए रखने के दौरान अपवाद को फिर से कैसे उठा सकता हूं?
try:
# do something exception-prone
except FooException as e:
if e.message == 'Something I want to handle':
# handle the exception
else:
raise e
यह एक समस्या के साथ ठीक काम करता है। यदि मैं अपवाद को फिर से उठाता हूं, तो अपवाद मूल रूप से हुआ अपवाद स्थान के स्थान पर, फिर से उठाए गए लाइन पर (यानी raise e
पर) उस अपवाद पर होता है। यह डिबगिंग के लिए आदर्श नहीं है, जहां आप जानना चाहते हैं कि मूल अपवाद कहां हुआ।
इस प्रकार मेरा प्रश्न: मूल अपवाद स्थान को बनाए रखते हुए इसे पकड़ने के बाद अपवाद को फिर से बढ़ाने या अन्यथा "पास" करने का कोई तरीका है?
नोट: यदि आप सोच रहे हैं कि वास्तविक स्थिति क्या है: मैं गतिशील रूप से __import__
का उपयोग करके कुछ मॉड्यूल आयात कर रहा हूं। मैं इस मामले के साथ सौदा करने के लिए ImportError
को पकड़ रहा हूं कि इनमें से कोई भी मॉड्यूल मौजूद नहीं है। हालांकि, इस मामले में इनमें से किसी भी मॉड्यूल में एक आयात कथन होता है जो ImportError
उठाता है, मैं चाहता हूं कि उन "असली" (मेरे आवेदन के दृष्टिकोण से) अपवाद उठाए जाएं - और मूल स्थान पर जहां तक डिबगिंग हो उपकरण चिंतित हैं।
दुह! आसान। मैं कोशिश/छोड़ने के लिए संदर्भ को देख रहा था और उठाने के लिए भूल गया था। धन्यवाद। – Ghopper21