যেকোনো প্রোগ্রামিং ভাষায় আমরা এমন একটি পরিস্থিতি খুঁজে পাই যেখানে ব্যতিক্রম উত্থাপিত হয়। পাইথনের অনেক ইনবিল্ট ব্যতিক্রম হ্যান্ডলিং মেকানিজম রয়েছে। এই ব্যতিক্রম নাম দ্বারা পরিচালিত হয় যা ত্রুটি আছে. পাইথনের একটি ব্লকও রয়েছে যাকে শেষ বলা হয় যা ব্যতিক্রম পরিচালনা করা হোক বা না হোক নির্বিশেষে কার্যকর করা হয়।
সিনট্যাক্স
try: # main python Code.... except: # It is optional block # Code to handle exception finally: # This Code that is always executed
উদাহরণ
নিচের কোডে আমরা NameError নামে একটি ব্যতিক্রম দেখতে পাচ্ছি। এখানে আমরা একটি কোড তৈরি করি যা অঘোষিত ভেরিয়েবলকে বোঝায়। যদিও ব্যতিক্রমটি পরিচালনা করা হয় কোডটি এখনও "অবশেষে" ব্লকে চলে। "অবশেষে" ব্লকের কোডটিও কার্যকর হয়৷
try:
var1 = 'Tutorials'
# NameError is raised
print(var2)
# Handle the exception
except NameError:
print("variable is not found in local or global scope.")
finally:
# Regardless of exception generation,
# this block is always executed
print('finally block code here') আউটপুট
উপরের কোডটি চালানো আমাদের নিম্নলিখিত ফলাফল দেয় -
variable is not found in local or global scope. finally block code here
ব্যতিক্রম হ্যান্ডলিং ছাড়া
ধরুন আমরা ব্যতিক্রমটি পরিচালনা না করার জন্য কোড ডিজাইন করি। তারপরও অবশেষে ব্লকটি পরিচালনা না করা ব্যতিক্রমগুলির জন্য কোডটি কার্যকর করবে৷
উদাহরণ
try:
var1 = 'Tutorials'
# NameError is raised
print(var2)
# No exception handling
finally:
# Regardless of exception generation,
# this block is always executed
print('finally block code here') আউটপুট
উপরের কোডটি চালানো আমাদের নিম্নলিখিত ফলাফল দেয় -
finally block code here Traceback (most recent call last): File "xxx.py", line 4, in print(var2) NameError: name 'var2' is not defined