इस ट्यूटोरियल में, आप विभिन्न प्रकार की त्रुटियों और अपवादों के बारे में जानेंगे जो कि पायथन में अंतर्निहित हैं। जब भी पायथन दुभाषिया त्रुटियों का सामना करता है तो उन्हें उठाया जाता है।
वीडियो: पायथन एक्सेप्शन हैंडलिंग
एक प्रोग्राम लिखते समय हम कुछ गलतियाँ कर सकते हैं, जब हम इसे चलाने का प्रयास करते हैं तो त्रुटियां होती हैं। जैसे ही यह एक अनहोनी त्रुटि का सामना करता है एक अजगर कार्यक्रम समाप्त हो जाता है। इन त्रुटियों को मोटे तौर पर दो वर्गों में वर्गीकृत किया जा सकता है:
- सिंटैक्स त्रुटियां
- तार्किक त्रुटियाँ (अपवाद)
पायथन सिंटैक्स त्रुटियां
भाषा की उचित संरचना (सिंटैक्स) का पालन नहीं करने के कारण हुई त्रुटि को सिंटैक्स त्रुटि या पार्सिंग त्रुटि कहा जाता है ।
आइए एक उदाहरण देखें:
>>> if a < 3 File "", line 1 if a < 3 SyntaxError: invalid syntax
जैसा कि उदाहरण में दिखाया गया है, एक तीर इंगित करता है कि पार्सर सिंटैक्स त्रुटि में कहाँ भाग गया।
हम यहाँ देख सकते हैं कि विवरण में एक उपनिवेश :
गायब है if
।
पायथन लॉजिकल एरर्स (अपवाद)
त्रुटियां जो रनटाइम पर होती हैं (सिंटैक्स टेस्ट पास करने के बाद) को अपवाद या तार्किक त्रुटियां कहा जाता है ।
उदाहरण के लिए, वे तब होते हैं जब हम एक फ़ाइल खोलने की कोशिश करते हैं (पढ़ने के लिए) जो मौजूद नहीं है ( FileNotFoundError
), एक संख्या को शून्य से विभाजित करने का प्रयास करें ( ZeroDivisionError
), या मौजूद नहीं होने वाले मॉड्यूल को आयात करने का प्रयास करें ( ImportError
)।
जब भी इस प्रकार की रनटाइम त्रुटियां होती हैं, तो पायथन अपवाद वस्तु बनाता है। यदि ठीक से संभाला नहीं गया है, तो यह उस त्रुटि के साथ-साथ उस त्रुटि के बारे में कुछ विवरण के साथ एक ट्रेसबैक प्रिंट करता है।
आइए देखें कि पायथन इन त्रुटियों का इलाज कैसे करता है:
>>> 1 / 0 Traceback (most recent call last): File "", line 301, in runcode File "", line 1, in ZeroDivisionError: division by zero >>> open("imaginary.txt") Traceback (most recent call last): File "", line 301, in runcode File "", line 1, in FileNotFoundError: (Errno 2) No such file or directory: 'imaginary.txt'
पायथन में निर्मित अपवाद
अवैध संचालन अपवाद उठा सकते हैं। पाइथन में बहुत सारे बिल्ट-इन अपवाद हैं जो कि संबंधित त्रुटियों के होने पर उठाए जाते हैं। हम बिल्ट-इन local()
फ़ंक्शन का उपयोग करके सभी अंतर्निहित अपवाद देख सकते हैं:
print(dir(locals()('__builtins__')))
locals()('__builtins__')
अंतर्निहित अपवादों, कार्यों और विशेषताओं का एक मॉड्यूल लौटाएगा। dir
हमें इन विशेषताओं को तार के रूप में सूचीबद्ध करने की अनुमति देता है।
पायथन प्रोग्रामिंग में कुछ सामान्य निर्मित अपवादों के साथ-साथ यह त्रुटि है कि उनके कारण नीचे सूचीबद्ध हैं:
अपवाद | त्रुटि का कारण |
---|---|
AssertionError | assert बयान विफल होने पर उठाया गया । |
AttributeError | विशेषता असाइनमेंट या संदर्भ विफल होने पर उठाया गया। |
EOFError | उठाया जब input() फ़ंक्शन फ़ाइल की स्थिति को समाप्त करता है। |
FloatingPointError | एक अस्थायी बिंदु ऑपरेशन विफल होने पर उठाया गया। |
GeneratorExit | जब एक जनरेटर close() विधि कहा जाता है उठाएँ । |
ImportError | आयातित मॉड्यूल नहीं मिलने पर उठाया गया। |
IndexError | उठाया जब एक अनुक्रम का सूचकांक सीमा से बाहर है। |
KeyError | एक शब्दकोश में एक कुंजी नहीं मिलने पर उठाया। |
KeyboardInterrupt | उपयोगकर्ता द्वारा बाधा कुंजी ( Ctrl+C या Delete ) को हिट करने पर उठाया गया । |
MemoryError | उठाया जब एक ऑपरेशन स्मृति से बाहर चलाता है। |
NameError | उठाया जब एक चर स्थानीय या वैश्विक दायरे में नहीं मिला है। |
NotImplementedError | अमूर्त विधियों द्वारा उठाया गया। |
OSError | उठाया जब सिस्टम ऑपरेशन सिस्टम से संबंधित त्रुटि का कारण बनता है। |
OverflowError | उठाया जब एक अंकगणितीय ऑपरेशन का परिणाम प्रतिनिधित्व करने के लिए बहुत बड़ा है। |
ReferenceError | उठाया जब एक कमजोर संदर्भ प्रॉक्सी का उपयोग किया जाता है एक कचरा एकत्र संदर्भ का उपयोग करने के लिए। |
RuntimeError | जब कोई त्रुटि किसी अन्य श्रेणी में नहीं आती है, तो उठाया गया। |
StopIteration | next() यह इंगित करने के लिए फ़ंक्शन द्वारा उठाया गया कि पुनरावृत्त द्वारा लौटाए जाने के लिए कोई और आइटम नहीं है। |
SyntaxError | सिंटैक्स त्रुटि का सामना होने पर पार्सर द्वारा उठाया गया। |
IndentationError | गलत इंडेंटेशन होने पर उठाया। |
TabError | उठाया जब इंडेंटेशन में असंगत टैब और रिक्त स्थान होते हैं। |
SystemError | उठाया जब दुभाषिया आंतरिक त्रुटि का पता लगाता है। |
SystemExit | sys.exit() कार्य द्वारा उठाया गया । |
TypeError | कोई फ़ंक्शन या ऑपरेशन गलत प्रकार की वस्तु पर लागू होने पर उठाया गया। |
UnboundLocalError | उठाया जब एक फ़ंक्शन या विधि में एक स्थानीय चर के लिए एक संदर्भ बनाया जाता है, लेकिन कोई भी मूल्य उस चर के लिए बाध्य नहीं किया गया है। |
UnicodeError | जब एक यूनिकोड-संबंधित एन्कोडिंग या डिकोडिंग त्रुटि उत्पन्न होती है। |
UnicodeEncodeError | एन्कोडिंग के दौरान एक यूनिकोड से संबंधित त्रुटि होने पर उठाया जाता है। |
UnicodeDecodeError | जब डिकोडिंग के दौरान एक यूनिकोड-संबंधी त्रुटि उत्पन्न होती है। |
UnicodeTranslateError | अनुवाद के दौरान एक यूनिकोड से संबंधित त्रुटि होने पर उठाया गया। |
ValueError | उठाया जब एक फ़ंक्शन को सही प्रकार का लेकिन अनुचित मूल्य का तर्क मिलता है। |
ZeroDivisionError | उठाया जब डिवीजन या modulo ऑपरेशन के दूसरे ऑपरेंड शून्य है। |
यदि आवश्यक हो, तो हम पायथन में अपने स्वयं के अपवादों को भी परिभाषित कर सकते हैं। उनके बारे में अधिक जानने के लिए, पायथन उपयोगकर्ता-परिभाषित अपवाद पर जाएँ।
हम अजगर में इन बिल्ट-इन और उपयोगकर्ता-निर्धारित अपवादों से प्रबंधित कर सकते try
, except
और finally
बयान। उनके बारे में अधिक जानने के लिए, पायथन प्रयास और सिवाय बयानों को देखें।