पायथन में एक अपवाद क्या है?
एक अपवाद एक त्रुटि है जो एक कार्यक्रम के निष्पादन के समय होता है। हालाँकि, प्रोग्राम चलाते समय, पायथन एक अपवाद उत्पन्न करता है जिसे आपके प्रोग्राम को क्रैश होने से बचाने के लिए नियंत्रित किया जाना चाहिए। पायथन भाषा में, अपवाद स्वचालित रूप से त्रुटियों पर ट्रिगर होते हैं, या उन्हें आपके कोड द्वारा ट्रिगर और इंटरसेप्ट किया जा सकता है।
अपवाद इंगित करता है कि, हालांकि घटना हो सकती है, इस प्रकार की घटना अक्सर होती है। जब विधि अपवाद को संभालने में सक्षम नहीं होती है, तो इसे इसके कॉलर फ़ंक्शन पर फेंक दिया जाता है। आखिरकार, जब एक अपवाद को मुख्य फ़ंक्शन से बाहर निकाल दिया जाता है, तो कार्यक्रम को अचानक समाप्त कर दिया जाता है।
इस पायथन असाधारण हैंडलिंग ट्यूटोरियल में, आप सीखेंगे:
- पायथन में एक अपवाद क्या है?
- अपवाद के सामान्य उदाहरण
- आपको अपवाद का उपयोग क्यों करना चाहिए?
- अपवाद के नियम
- असाधारण हैंडलिंग तंत्र
- द ट्राइ स्टेटमेंट
- कैच स्टेटमेंट
- द रायज़ स्टेटमेंट
- महत्वपूर्ण पायथन त्रुटियां
- अन्य महत्वपूर्ण पायथन अपवाद
- त्रुटि बनाम अपवाद
अपवाद के सामान्य उदाहरण:
- शून्य से विभाजन
- ऐसी फ़ाइल तक पहुँचना जो मौजूद नहीं है।
- दो असंगत प्रकारों का जोड़
- एक अनुक्रम के कोई नहीं अनुक्रमित तक पहुँचने की कोशिश कर रहा है
- डिस्कनेक्ट किए गए डेटाबेस सर्वर से तालिका को निकालना।
- उपलब्ध राशि से अधिक की एटीएम निकासी
आपको अपवाद का उपयोग क्यों करना चाहिए?
यहाँ पायथन में अपवादों का उपयोग करने के कारण हैं:
- अपवाद हैंडलिंग आपको सामान्य कोड से त्रुटि-हैंडलिंग कोड को अलग करने की अनुमति देता है।
- एक अपवाद एक पायथन ऑब्जेक्ट है जो एक त्रुटि का प्रतिनिधित्व करता है।
- कोड टिप्पणियों के साथ, अपवाद आपको अपने आप को यह याद दिलाने में मदद करता है कि कार्यक्रम क्या उम्मीद करता है।
- यह कोड को स्पष्ट करता है और पठनीयता को बढ़ाता है।
- आपको परिणामों को उत्तेजित करने की अनुमति देता है क्योंकि त्रुटि-हैंडलिंग एक स्थान पर और एक तरीके से होती है।
- त्रुटि संदेशों को संभालने के लिए एक अपवाद एक सुविधाजनक तरीका है।
- पायथन में, आप कार्यक्रम में अपवाद अपवाद विधि का उपयोग करके एक अपवाद बढ़ा सकते हैं।
- एक अपवाद को उठाना आपको वर्तमान कोड निष्पादन को तोड़ने में मदद करता है और अपवाद को वापस समाप्त होने तक वापस कर देता है जब तक कि इसे संभाला नहीं जाता है।
- घटकों के लिए प्रसंस्करण अपवाद जो उन्हें सीधे संभाल नहीं सकते हैं।
अपवाद के नियम
यहाँ पायथन अपवाद से निपटने के कुछ आवश्यक नियम दिए गए हैं:
- अपवाद को कक्षा की वस्तुएं होना चाहिए
- क्लास के अपवादों के लिए, आप एक क्लॉज़ को छोड़कर स्टेटमेंट का उपयोग कर सकते हैं जिसमें किसी विशेष वर्ग का उल्लेख होता है।
- यहां तक कि अगर कोई कथन या अभिव्यक्ति वाक्यात्मक रूप से सही है, तो इसे निष्पादित करने का प्रयास करते समय एक त्रुटि दिखाई दे सकती है।
- निष्पादन के दौरान पाए गए त्रुटियों को अपवाद कहा जाता है, और वे बिना शर्त घातक नहीं हैं।
असाधारण हैंडलिंग तंत्र
अपवाद हैंडलिंग निम्नलिखित 5 कीवर्ड द्वारा प्रबंधित की जाती है:
- प्रयत्न
- पकड़
- आखिरकार
- फेंकना
द ट्राइ स्टेटमेंट
एक कोशिश के बयान में कीवर्ड कोशिश शामिल है, इसके बाद एक बृहदान्त्र (:) और कोड का एक सूट जिसमें अपवाद हो सकते हैं। इसकी एक या अधिक धाराएँ होती हैं।
कोशिश बयान के निष्पादन के दौरान, यदि कोई अपवाद नहीं हुआ, तो दुभाषिया उस विशिष्ट कोशिश बयान के लिए अपवाद संचालकों की उपेक्षा करता है।
यदि किसी सूट में कोई अपवाद होता है, तो कोशिश सूट की समाप्ति के बाद हैंडलर को छोड़कर ट्राइ सूट और प्रोग्राम कंट्रोल ट्रांसफर मेल खाती है।
Syntax:try:statement(s)
कैच स्टेटमेंट
कैच ब्लॉक एक समय में एक तर्क लेते हैं, जो अपवाद का प्रकार है जो इसे पकड़ने की संभावना है। ये तर्क एक विशेष प्रकार के अपवाद से लेकर हो सकते हैं, जो अपवाद के कैच-ऑल श्रेणी से भिन्न हो सकते हैं।
ब्लॉक पकड़ने के नियम:
- आप कीवर्ड कैच का उपयोग करके कैच ब्लॉक को परिभाषित कर सकते हैं
- पकड़ अपवाद पैरामीटर हमेशा कोष्ठक में संलग्न है
- यह हमेशा अपवाद के प्रकार का प्रतिनिधित्व करता है जो ब्लॉक हैंडल को पकड़ता है।
- एक अपवाद हैंडलिंग कोड दो {} घुंघराले ब्रेसिज़ के बीच लिखा जाता है।
- आप एक ही कोशिश ब्लॉक के भीतर कई कैच ब्लॉक रख सकते हैं।
- आप कोशिश ब्लॉक के बाद ही कैच ब्लॉक का उपयोग कर सकते हैं।
- सभी कैच ब्लॉक को उपवर्ग से सुपरक्लास अपवाद के लिए आदेश दिया जाना चाहिए।
उदाहरण:
try}catch (ArrayIndexOutOfBoundsException e) {System.err.printin("Caught first " + e.getMessage()); } catch (IOException e) {System.err.printin("Caught second " + e.getMessage());}
अंत में ब्लॉक करें
अंत में ब्लॉक हमेशा अपवाद के बावजूद निष्पादित होता है या नहीं फेंका जा रहा है। अंतिम कीवर्ड आपको कोड का एक ब्लॉक बनाने की अनुमति देता है जो एक कोशिश-पकड़ने वाले ब्लॉक का अनुसरण करता है।
अंत में, क्लॉज वैकल्पिक है। इसका उद्देश्य साफ-सुथरी कार्रवाइयों को परिभाषित करना है जो कि सभी परिस्थितियों में निष्पादित होनी चाहिए।
try:raise KeyboardInterruptfinally:print 'welcome, world!'OutputWelcome, world!KeyboardInterrupt
अंत में, कोशिश कथन से पहले क्लॉज निष्पादित किया जाता है।
द रायज़ स्टेटमेंट
उठाना कथन एक तर्क को निर्दिष्ट करता है जो अपवाद ऑब्जेक्ट को प्रारंभ करता है। यहाँ, एक अल्पविराम अपवाद नाम और तर्क या तर्क का अनुसरण करता है जो अल्पविराम का अनुसरण करता है।
वाक्य - विन्यास:
raise [Exception [, args [, traceback]]]
इस वाक्य रचना में, तर्क वैकल्पिक है, और निष्पादन के समय, अपवाद तर्क मान हमेशा कोई नहीं होता है।
उदाहरण:
एक पायथन अपवाद किसी स्ट्रिंग, वर्ग, संख्या, या ऑब्जेक्ट की तरह कोई भी मूल्य हो सकता है। पायथन कोर द्वारा उठाए गए इन अपवादों में से अधिकांश एक तर्क के साथ वर्ग हैं जो वर्ग का एक उदाहरण है।
महत्वपूर्ण पायथन त्रुटियां
त्रुटि प्रकार | विवरण |
अंकगणित | ArithmeticError सभी अंकगणितीय अपवादों के लिए एक आधार वर्ग के रूप में कार्य करता है। यह अंकगणित संचालन में त्रुटियों के लिए उठाया जाता है। |
आयात | जब आप एक मॉड्यूल को पेश करने की कोशिश कर रहे हैं जो कि मौजूद नहीं है तो ImportError को उठाया जाता है। इस प्रकार का अपवाद तब होता है जब आपने मॉड्यूल नाम या मॉड्यूल में टाइपिंग की गलती की है जो मानक पथ में मौजूद नहीं है। |
अनुक्रमणिका | जब आप किसी अनुक्रम को संदर्भित करने का प्रयास करते हैं तो एक IndexErroris उठाया जाता है जो सीमा से बाहर है। |
KeyError | जब किसी शब्दकोश में विशिष्ट कुंजी नहीं मिलती है, तो KeyError अपवाद उठाया जाता है। |
NameError | NameError तब उठाया जाता है जब एक नाम को कोड में संदर्भित किया जाता है जो स्थानीय या वैश्विक नाम स्थान में कभी मौजूद नहीं होता है। |
मान | जब कोई फ़ंक्शन या बिल्ट-इन ऑपरेशन एक तर्क प्राप्त करता है, जो सही प्रकार का हो सकता है, लेकिन उपयुक्त मान नहीं होने पर मान त्रुटि को उठाया जाता है। |
EOFerror | इस तरह की त्रुटि तब उत्पन्न होती है जब कोई अंतर्निहित डेटा (इनपुट () या raw_input ()) किसी भी डेटा को पढ़े बिना ईओएफ स्थिति तक पहुंच जाता है। |
ZeroDivisonError | इस प्रकार की त्रुटि तब होती है जब शून्य या विभाजन सभी संख्यात्मक प्रकारों के लिए होता है। |
IOError- | इनपुट / आउटपुट ऑपरेशन विफल होने पर इस तरह की त्रुटि सामने आई। |
वक्य रचना त्रुटि | पायथन सिंटैक्स में कोई त्रुटि होने पर सिंटेक्सऑवर्स बढ़ा। |
IndentationError | जब इंडेंटेशन ठीक से परिभाषित नहीं होता है, तो यह त्रुटि होती है |
अन्य महत्वपूर्ण पायथन अपवाद
अपवाद | विवरण |
अंकगणित | अंकगणितीय त्रुटि, जैसे विभाजन-शून्य। |
ArraylndexOutOfBoundsException | एरे इंडेक्स बाहर की सीमा है। |
ArrayStoreException | असाइनमेंट आपको असंगत प्रकार के सरणी तत्व में मदद करता है। |
ClassCastException | अमान्य डाली |
MlegalMonitorStateException | अवैध मॉनीटर ऑपरेशन, जैसे अनलॉक किए गए धागे पर प्रतीक्षा करना। |
MlegalStateException | पर्यावरण या एप्लिकेशन गलत स्थिति में है। |
वर्ग अपवाद में नहीं मिला | कक्षा नहीं मिली। |
CloneNotSupportedException | किसी ऑब्जेक्ट को क्लोन करने का प्रयास जो क्लोन करने योग्य इंटरफ़ेस को लागू नहीं करता है। |
अवैध AccessException | किसी वर्ग तक पहुंच से वंचित है। |
तात्कालिकता | तब होता है जब आप एक इंटरफ़ेस या अमूर्त वर्ग का ऑब्जेक्ट बनाने का प्रयास करते हैं। |
CloneNotSupportedException | किसी ऑब्जेक्ट को क्लोन करने का प्रयास जो इंटरफ़ेस को लागू नहीं करता है। |
त्रुटि बनाम अपवाद
त्रुटि | अपवाद |
पायथन में सभी त्रुटियां अनियंत्रित प्रकार हैं। | अपवादों में जाँच और अनियंत्रित दोनों प्रकार शामिल हैं। |
त्रुटियां रन टाइम पर होती हैं जो संकलक के लिए अज्ञात हैं। | अपवादों को ट्राइ-कैच ब्लॉक्स की मदद से ठीक किया जा सकता है। |
त्रुटियां ज्यादातर उस वातावरण के कारण होती हैं जिसमें कोई एप्लिकेशन चल रहा है। | आवेदन ही अपवादों का कारण बनता है। |
उदाहरण: OutofMemoryError | उदाहरण: जाँच अपवाद, SQL अपवाद, NullPointerException, आदि। |
सारांश
- एक अपवाद एक त्रुटि है जो एक कार्यक्रम के निष्पादन के दौरान हुआ।
- अपवाद इंगित करता है कि, हालांकि घटना हो सकती है, इस प्रकार की घटना अक्सर होती है।
- अपवाद के सामान्य उदाहरण हैं 1) शून्य द्वारा डिवीजन, 2) एक फ़ाइल तक पहुंचना जो मौजूद नहीं है, 3) दो असंगत प्रकारों का जोड़।
- एक अपवाद एक पायथन ऑब्जेक्ट है जो एक त्रुटि का प्रतिनिधित्व करता है।
- एक कोशिश के बयान में कीवर्ड कोशिश शामिल है, इसके बाद एक बृहदान्त्र (:) और कोड का एक सूट जिसमें अपवाद हो सकते हैं। इसकी एक या अधिक धाराएँ होती हैं।
- कैच ब्लॉक एक समय में एक तर्क लेते हैं, जो अपवाद का प्रकार है जो इसे पकड़ने की संभावना है।
- उठाना कथन एक तर्क को निर्दिष्ट करता है जो अपवाद ऑब्जेक्ट को प्रारंभ करता है।
- अंत में, ब्लॉक हमेशा अपवाद के बावजूद निष्पादित करता है या नहीं फेंका जा रहा है।