एक अपवाद एक घटना है, जो प्रोग्राम के निष्पादन के दौरान होती है जो प्रोग्राम के निर्देशों के सामान्य प्रवाह को बाधित करती है। सामान्य तौर पर, जब एक पायथन लिपि एक ऐसी स्थिति का सामना करती है जिसका वह सामना नहीं कर सकता है, तो यह एक अपवाद उठाता है। एक अपवाद एक पायथन ऑब्जेक्ट है जो एक त्रुटि का प्रतिनिधित्व करता है।
जब एक पायथन लिपि एक अपवाद उठाती है, तो उसे या तो तुरंत अपवाद को संभालना चाहिए अन्यथा यह समाप्त हो जाता है और बाहर निकल जाता है।
अपवाद को संभालना
यदि आपके पास कुछ संदिग्ध कोड है जो अपवाद उत्पन्न कर सकता है, तो आप संदिग्ध कोड को कोशिश में डालकर अपने कार्यक्रम की रक्षा कर सकते हैं। :खंड मैथा। कोशिश के बाद:ब्लॉक करें, सिवाय . शामिल करें :कथन, उसके बाद कोड का एक ब्लॉक जो समस्या को यथासंभव सुरुचिपूर्ण ढंग से संभालता है।
सिंटैक्स
कोशिश का सरल सिंटैक्स यहां दिया गया है .... को छोड़कर ... और ब्लॉक -
try: You do your operations here; ...................... except ExceptionI: If there is ExceptionI, then execute this block. except ExceptionII: If there is ExceptionII, then execute this block. ...................... else: If there is no exception then execute this block.
यहां ऊपर बताए गए सिंटैक्स के बारे में कुछ महत्वपूर्ण बिंदु दिए गए हैं -
- एक सिंगल ट्राई स्टेटमेंट में स्टेटमेंट को छोड़कर कई हो सकते हैं। यह तब उपयोगी होता है जब ट्राई ब्लॉक में ऐसे स्टेटमेंट होते हैं जो विभिन्न प्रकार के अपवादों को फेंक सकते हैं।
- आप क्लॉज को छोड़कर जेनेरिक भी प्रदान कर सकते हैं, जो किसी भी अपवाद को हैंडल करता है।
- छोड़कर क्लॉज के बाद, आप एक और-क्लॉज शामिल कर सकते हैं। अन्य-ब्लॉक में कोड निष्पादित होता है यदि कोशिश में कोड:ब्लॉक अपवाद नहीं उठाता है।
- अन्य-ब्लॉक कोड के लिए एक अच्छी जगह है जिसे कोशिश करने की आवश्यकता नहीं है:ब्लॉक की सुरक्षा।
उदाहरण
यह उदाहरण एक फ़ाइल खोलता है, फ़ाइल में सामग्री लिखता है और इनायत से बाहर आता है क्योंकि इसमें कोई समस्या नहीं है -
#!/usr/bin/python try: fh = open("testfile", "w") fh.write("This is my test file for exception handling!!") except IOError: print "Error: can\'t find file or read data" else: print "Written content in the file successfully" fh.close()
आउटपुट
यह निम्नलिखित परिणाम उत्पन्न करता है -
Written content in the file successfully
उदाहरण
यह उदाहरण उस फ़ाइल को खोलने का प्रयास करता है जहाँ आपके पास लिखने की अनुमति नहीं है, इसलिए यह एक अपवाद उत्पन्न करता है -
#!/usr/bin/python try: fh = open("testfile", "r") fh.write("This is my test file for exception handling!!") except IOError: print "Error: can\'t find file or read data" else: print "Written content in the file successfully"
आउटपुट
यह निम्नलिखित परिणाम उत्पन्न करता है -
Error: can't find file or read data
बिना अपवाद वाले खंड को छोड़कर
आप बिना किसी अपवाद के अपवाद के बयान का भी उपयोग कर सकते हैं -
try: You do your operations here; ...................... except: If there is any exception, then execute this block. ...................... else: If there is no exception then execute this block.
इस तरह का कोशिश-छोड़कर बयान होने वाले सभी अपवादों को पकड़ता है। हालांकि, इस तरह के कोशिश-छोड़कर बयान का उपयोग करना एक अच्छा प्रोग्रामिंग अभ्यास नहीं माना जाता है, क्योंकि यह सभी अपवादों को पकड़ता है लेकिन प्रोग्रामर को समस्या के मूल कारण की पहचान नहीं करता है।
एकाधिक अपवादों के साथ खंड को छोड़कर
आप निम्न प्रकार से कई अपवादों को संभालने के लिए कथन को छोड़कर उसी का उपयोग कर सकते हैं -
try: You do your operations here; ...................... except(Exception1[, Exception2[,...ExceptionN]]]): If there is any exception from the given exception list, then execute this block. ...................... else: If there is no exception then execute this block.
कोशिश अंत खंड
आप आखिरकार . का उपयोग कर सकते हैं :कोशिश . के साथ ब्लॉक करें :खंड मैथा। अंत में ब्लॉक किसी भी कोड को डालने का एक स्थान है जिसे निष्पादित करना होगा, चाहे कोशिश-ब्लॉक ने अपवाद उठाया हो या नहीं। ट्राई-फाइनली स्टेटमेंट का सिंटैक्स यह है -
try: You do your operations here; ...................... Due to any exception, this may be skipped. finally: This would always be executed. ......................
आप अन्य क्लॉज़ के साथ-साथ फ़ाइनल क्लॉज़ का भी उपयोग नहीं कर सकते।
उदाहरण
#!/usr/bin/python try: fh = open("testfile", "w") fh.write("This is my test file for exception handling!!") finally: print "Error: can\'t find file or read data"
आउटपुट
यदि आपके पास फाइल को राइटिंग मोड में खोलने की अनुमति नहीं है, तो यह निम्नलिखित परिणाम देगा -
Error: can't find file or read data
इसी उदाहरण को अधिक सफाई से इस प्रकार लिखा जा सकता है -
उदाहरण
#!/usr/bin/python try: fh = open("testfile", "w") try: fh.write("This is my test file for exception handling!!") finally: print "Going to close the file" fh.close() except IOError: print "Error: can\'t find file or read data"
जब कोशिश ब्लॉक में एक अपवाद फेंका जाता है, तो निष्पादन तुरंत अंत में ब्लॉक में चला जाता है। अंत में ब्लॉक में सभी बयानों को निष्पादित करने के बाद, अपवाद को फिर से उठाया जाता है और कोशिश-छोड़कर बयान की अगली उच्च परत में मौजूद होने पर अपवाद बयानों में नियंत्रित किया जाता है।