पायथन जब भी कोड असामान्य रूप से व्यवहार करता है तो एरर और अपवाद फेंकता है और इसका निष्पादन अचानक रुक जाता है। पायथन हमें ट्राई-एक्सेप्ट स्टेटमेंट का उपयोग करके अपवाद संचालन विधि की मदद से ऐसे परिदृश्यों को संभालने के लिए उपकरण प्रदान करता है। कुछ मानक अपवाद जो पाए जाते हैं उनमें 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):
"""अन्य अपवादों के लिए बेस क्लास"""
pass
class Dividebyzero(Error):
"""जब इनपुट मान शून्य हो तो उठाया जाता है"""
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!
उपयोगकर्ता-परिभाषित अपवाद क्लास बनाना (मानक अपवाद)
RuntimeError एक बिल्ट-इन क्लास है जिसे तब उठाया जाता है जब कोई जनरेटेड एरर उल्लिखित श्रेणियों में नहीं आता। नीचे दिया गया प्रोग्राम बताता है कि रनटाइम एरर को बेस क्लास और उपयोगकर्ता-परिभाषित एरर को डेराइव्ड क्लास के रूप में कैसे उपयोग करें।
उदाहरण
# उपयोगकर्ता परिभाषित त्रुटि
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')निष्कर्ष
इस लेख में, हमने पायथन 3.x या उससे पहले के संस्करण में उपयोगकर्ता-परिभाषित अपवादों को घोषित और कार्यान्वित करना सीखा।