প্রোগ্রামটি না থামিয়ে পুরো ট্রেসব্যাক কীভাবে প্রিন্ট করবেন?
আপনি যখন কোনও ত্রুটির কারণে আপনার প্রোগ্রামটি থামাতে চান না, আপনি চেষ্টা করে / বাদ দিয়ে ত্রুটিটি পরিচালনা করতে হবে:
try:
do_something_that_might_error()
except Exception as error:
handle_the_error(error)
পূর্ণ ট্রেসব্যাকটি বের করতে, আমরা traceback
স্ট্যান্ডার্ড লাইব্রেরি থেকে মডিউলটি ব্যবহার করব :
import traceback
এবং পুরো স্ট্যাকট্রেস আমরা পেয়েছি তা দেখানোর জন্য একটি শালীন জটিল স্ট্যাকট্রেস তৈরি করতে:
def raise_error():
raise RuntimeError('something bad happened!')
def do_something_that_might_error():
raise_error()
মুদ্রণ
করার প্রিন্ট পূর্ণ ট্রেসব্যাক, ব্যবহার traceback.print_exc
পদ্ধতি:
try:
do_something_that_might_error()
except Exception as error:
traceback.print_exc()
কোন মুদ্রণ:
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
File "<stdin>", line 2, in do_something_that_might_error
File "<stdin>", line 2, in raise_error
RuntimeError: something bad happened!
প্রিন্টিং, লগিংয়ের চেয়ে ভাল:
তবে, আপনার মডিউলের জন্য একটি লগার স্থাপন করা একটি সেরা অনুশীলন। এটি মডিউলটির নাম জানবে এবং স্তরগুলি পরিবর্তন করতে সক্ষম হবে (অন্যান্য বৈশিষ্ট্যগুলির মধ্যে যেমন হ্যান্ডলারের)
import logging
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)
এই ক্ষেত্রে, আপনি logger.exception
পরিবর্তে ফাংশনটি চাইবেন :
try:
do_something_that_might_error()
except Exception as error:
logger.exception(error)
কোন লগ:
ERROR:__main__:something bad happened!
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
File "<stdin>", line 2, in do_something_that_might_error
File "<stdin>", line 2, in raise_error
RuntimeError: something bad happened!
অথবা সম্ভবত আপনি কেবল স্ট্রিং চান, সেক্ষেত্রে আপনি তার traceback.format_exc
পরিবর্তে ফাংশনটি চান :
try:
do_something_that_might_error()
except Exception as error:
logger.debug(traceback.format_exc())
কোন লগ:
DEBUG:__main__:Traceback (most recent call last):
File "<stdin>", line 2, in <module>
File "<stdin>", line 2, in do_something_that_might_error
File "<stdin>", line 2, in raise_error
RuntimeError: something bad happened!
উপসংহার
এবং তিনটি বিকল্পের জন্য, আমরা দেখতে পাই যে আমাদের ত্রুটি হওয়ার সময় আমরা একই আউটপুট পাই:
>>> do_something_that_might_error()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in do_something_that_might_error
File "<stdin>", line 2, in raise_error
RuntimeError: something bad happened!
print(sys.exc_info()[0]
কপি করে প্রিন্ট<class 'Exception'>
।