পাইথন এরর এবং এক্সেপশন থ্রো করে যখনই কোড অস্বাভাবিকভাবে behave করে এবং এর এক্সিকিউশন হঠাৎ বন্ধ হয়। পাইথন আমাদের try-except স্টেটমেন্ট ব্যবহার করে এক্সেপশন হ্যান্ডলিং মেথডের সাহায্যে এই পরিস্থিতি হ্যান্ডল করার টুলস দেয়। কিছু স্ট্যান্ডার্ড এক্সেপশন হলো ArithmeticError, AssertionError, AttributeError, ImportError, ইত্যাদি।
ইউজার-ডিফাইনড এক্সেপশন ক্লাস তৈরি করা
এখানে আমরা একটি নতুন এক্সেপশন ক্লাস তৈরি করেছি: User_Error। এক্সেপশনগুলোকে বিল্ট-ইন Exception ক্লাস থেকে ডেরাইভ করা উচিত, সরাসরি বা পরোক্ষভাবে। দেওয়া উদাহরণটি দেখুন যাতে একটি কনস্ট্রাক্টর এবং ডিসপ্লে মেথড ক্লাসের ভিতরে আছে।
উদাহরণ
# MyError ক্লাস সুপার ক্লাস Exception থেকে এক্সটেন্ডেড
class User_Error(Exception):
# কনস্ট্রাক্টর মেথড
def __init__(self, value):
self.value = value
# __str__ ডিসপ্লে ফাংশন
def __str__(self):
return(repr(self.value))
try:
raise(User_Error("User defined error"))
# এক্সেপশনের ভ্যালু error-এ স্টোর
except User_Error as error:
print('A New Exception occured:', error.value)
আউটপুট
A New Exception occured: User defined error
ইউজার-ডিফাইনড এক্সেপশন ক্লাস (মাল্টিপল ইনহেরিটেন্স)
ডেরাইভড ক্লাস এক্সেপশন তৈরি হয় যখন একটি মডিউল একাধিক স্বতন্ত্র এরর হ্যান্ডল করে। এখানে আমরা সেই মডিউল দ্বারা ডিফাইনড এক্সেপশনগুলোর জন্য একটি বেস ক্লাস তৈরি করি। এই বেস ক্লাসকে বিভিন্ন ইউজার-ডিফাইনড ক্লাস ইনহেরিট করে বিভিন্ন টাইপের এরর হ্যান্ডল করে।
উদাহরণ
# পাইথন ইউজার-ডিফাইনড এক্সেপশন ডিফাইন
class Error(Exception):
"""Base class for other exceptions"""
pass
class Dividebyzero(Error):
"""Raised when the input value is zero"""
pass
try:
i_num = int(input("Enter a number: "))
if i_num == 0:
raise Dividebyzero
except Dividebyzero:
print("Input value is zero, try again!")
print()
আউটপুট
Enter a number: Input value is zero, try again!
ইউজার-ডিফাইনড এক্সেপশন ক্লাস (স্ট্যান্ডার্ড এক্সেপশন)
Runtime error হলো একটি বিল্ট-ইন ক্লাস যা তখন raise হয় যখন জেনারেটেড এরর menton করা ক্যাটেগরিতে না পড়ে। নিচের প্রোগ্রাম ব্যাখ্যা করে কিভাবে runtime errorকে বেস ক্লাস এবং ইউজার-ডিফাইনড এররকে ডেরাইভড ক্লাস হিসেবে ব্যবহার করা যায়।
উদাহরণ
# ইউজার ডিফাইনড এরর
class Usererror(RuntimeError):
def __init__(self, arg):
self.args = arg
try:
raise Usererror("userError")
except Usererror as e:
print(e.args)
আউটপুট
('u', 's', 'e', 'r', 'E', 'r', 'r', 'o', 'r')
উপসংহার
এই নিবন্ধে আমরা পাইথন ৩.x-এ ইউজার-ডিফাইনড এক্সেপশন ডিক্লেয়ার এবং বাস্তবায়ন শিখেছি।