को छोड़कर एक अलग से पकड़ा जाता है मैं निम्नलिखित कोड:अपवाद दो बार मार डाला जाता है और इसे ब्लॉक
file1.py
from file2 import tfun
class TestException(Exception):
pass
try:
print 'I am running'
tfun()
except TestException as e:
print 'I am caught'
print type(e)
except Exception as e:
print 'I am generally caught'
print type(e)
file2.py
def tfun():
from file1 import TestException
raise TestException()
और python file1.py
से आउटपुट निम्न है:
I am running
I am running
I am caught
<class 'file1.TestException'>
I am generally caught
<class 'file1.TestException'>
सबसे पहले इस मामले में कोड दो बार निष्पादित क्यों किया जाता है? मैं समझ सकता हूं कि आयात रिकर्सिव है लेकिन स्क्रिप्ट का कोड फिर से निष्पादित क्यों होता है?
दूसरा, दूसरी बार यह उसी except
ब्लॉक द्वारा पकड़ा नहीं जा रहा है, भले ही यह पहली बार जैसा ही हो, जिसे मुझे स्पष्टीकरण भी नहीं मिल रहा है।
अंत में, मैं इस समस्या के लिए एक नई फ़ाइल में कुछ भी स्थानांतरित किए बिना कामकाज खोजने की कोशिश कर रहा हूं लेकिन मुझे ऐसा लगता है कि यह कोई नहीं है। क्या इस समस्या को खत्म करना संभव है?
संपादित
दूसरे प्रश्न के लिए मुझे एहसास हुआ कि ऐसा इसलिए है क्योंकि कोड मॉड्यूल स्तर के अंदर है।
+1 एक संक्षिप्त, पूर्ण, स्टैंडअलोन प्रोग्राम के लिए +1 जो समस्या को प्रदर्शित करता है। रेफरी: http://stackoverflow.com/help/mcve और http://SSCCE.org –