उस वर्ग का नाम प्राप्त करें जो अपवाद वस्तु है:
e.__class__.__name__
और print_exc () फ़ंक्शन का उपयोग करके स्टैक ट्रेस भी प्रिंट होगा जो किसी भी त्रुटि संदेश के लिए आवश्यक जानकारी है।
ऐशे ही:
from traceback import print_exc
class CustomException(Exception): pass
try:
raise CustomException("hi")
except Exception, e:
print 'type is:', e.__class__.__name__
print_exc()
# print "exception happened!"
आपको इस तरह आउटपुट मिलेगा:
type is: CustomException
Traceback (most recent call last):
File "exc.py", line 7, in <module>
raise CustomException("hi")
CustomException: hi
और प्रिंट और विश्लेषण के बाद, कोड अपवाद को संभालने और बस निष्पादित करने का निर्णय नहीं ले सकता है raise
:
from traceback import print_exc
class CustomException(Exception): pass
def calculate():
raise CustomException("hi")
try:
calculate()
except Exception, e:
if e.__class__ == CustomException:
print 'special case of', e.__class__.__name__, 'not interfering'
raise
print "handling exception"
आउटपुट:
special case of CustomException not interfering
और दुभाषिया प्रिंट अपवाद:
Traceback (most recent call last):
File "test.py", line 9, in <module>
calculate()
File "test.py", line 6, in calculate
raise CustomException("hi")
__main__.CustomException: hi
raise
मूल अपवाद के बाद कॉल स्टैक को और अधिक प्रचारित करना जारी है। ( संभावित नुकसान से सावधान ) यदि आप नया अपवाद उठाते हैं तो यह नए (छोटे) स्टैक ट्रेस की देखभाल करता है।
from traceback import print_exc
class CustomException(Exception): pass
def calculate():
raise CustomException("hi")
try:
calculate()
except Exception, e:
if e.__class__ == CustomException:
print 'special case of', e.__class__.__name__, 'not interfering'
#raise CustomException(e.message)
raise e
print "handling exception"
आउटपुट:
special case of CustomException not interfering
Traceback (most recent call last):
File "test.py", line 13, in <module>
raise CustomException(e.message)
__main__.CustomException: hi
ध्यान दें कि ट्रेसबैक में calculate()
फ़ंक्शन को लाइन से शामिल नहीं 9
किया गया है जो मूल अपवाद का मूल है e
।
except:
(बिना नंगेraise
) का उपयोग करें , शायद एक बार कार्यक्रम के अलावा, और अधिमानतः तब नहीं।