ব্যতিক্রমী বস্তুর অন্তর্ভুক্ত শ্রেণীর নাম পান:
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
) কখনই ব্যবহার করবেন না এবং সম্ভবত ততক্ষণ না।