Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पायथन में एक्सेप्शन क्या है?


एक एक्सेप्शन एक घटना है, जो प्रोग्राम के निष्पादन के दौरान होती है और प्रोग्राम के निर्देशों के सामान्य प्रवाह को बाधित करती है। सामान्य तौर पर, जब एक पायथन स्क्रिप्ट का सामना ऐसी स्थिति से होता है जिससे वह निपट नहीं सकती, तो यह एक एक्सेप्शन उठाती है। एक एक्सेप्शन एक पायथन ऑब्जेक्ट है जो एक एरर को दर्शाता है।

जब एक पायथन स्क्रिप्ट एक एक्सेप्शन उठाती है, तो उसे या तो तुरंत एक्सेप्शन को हैंडल करना होगा अन्यथा यह समाप्त हो जाती है और क्विट हो जाती है।

एक्सेप्शन को हैंडल करना

यदि आपके पास कुछ संदिग्ध कोड है जो एक्सेप्शन उठा सकता है, तो आप संदिग्ध कोड को try: ब्लॉक में रखकर अपने प्रोग्राम की रक्षा कर सकते हैं। try: ब्लॉक के बाद, एक except: स्टेटमेंट शामिल करें, जिसके बाद कोड का एक ब्लॉक होता है जो समस्या को यथासंभव सुंदर तरीके से हैंडल करता है।

सिंटैक्स

यहां try....except...else ब्लॉक्स का सरल सिंटैक्स है:

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.

उपरोक्त सिंटैक्स के बारे में कुछ महत्वपूर्ण बिंदु:

  • एक सिंगल try स्टेटमेंट में मल्टीपल except स्टेटमेंट्स हो सकते हैं। यह तब उपयोगी होता है जब try ब्लॉक में ऐसे स्टेटमेंट्स होते हैं जो विभिन्न प्रकार के एक्सेप्शन्स फेंक सकते हैं।
  • आप एक जेनेरिक except क्लॉज भी प्रदान कर सकते हैं, जो किसी भी एक्सेप्शन को हैंडल करता है।
  • except क्लॉज(एस) के बाद, आप एक else-क्लॉज शामिल कर सकते हैं। else-ब्लॉक में कोड निष्पादित होता है यदि try: ब्लॉक में कोड एक्सेप्शन नहीं उठाता।
  • else-ब्लॉक उस कोड के लिए एक अच्छी जगह है जिसे try: ब्लॉक की सुरक्षा की आवश्यकता नहीं है।

उदाहरण

यह उदाहरण एक फाइल खोलता है, फाइल में कंटेंट लिखता है, और ग्रेसफुली बाहर निकलता है क्योंकि कोई समस्या नहीं है:

#!/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

नो एक्सेप्शन्स के साथ except क्लॉज

आप किसी एक्सेप्शन को परिभाषित किए बिना भी except स्टेटमेंट का उपयोग कर सकते हैं:

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-except स्टेटमेंट होने वाली सभी एक्सेप्शन्स को पकड़ लेता है। इस तरह के try-except स्टेटमेंट का उपयोग अच्छा प्रोग्रामिंग अभ्यास नहीं माना जाता है, क्योंकि यह सभी एक्सेप्शन्स को पकड़ लेता है लेकिन प्रोग्रामर को समस्या के मूल कारण की पहचान नहीं करने देता।

मल्टीपल एक्सेप्शन्स के साथ except क्लॉज

आप एक ही except स्टेटमेंट का उपयोग मल्टीपल एक्सेप्शन्स को हैंडल करने के लिए भी कर सकते हैं:

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-finally क्लॉज

आप try: ब्लॉक के साथ एक finally: ब्लॉक का उपयोग कर सकते हैं। finally ब्लॉक वह स्थान है जहां कोई भी कोड रखा जा सकता है जिसे निष्पादित होना ही चाहिए, चाहे try-ब्लॉक ने एक्सेप्शन उठाया हो या नहीं। try-finally स्टेटमेंट का सिंटैक्स यह है:

try:
    You do your operations here;
    ......................
    Due to any exception, this may be skipped.
finally:
    This would always be executed.
    ......................

आप finally क्लॉज के साथ else क्लॉज का उपयोग नहीं कर सकते।

उदाहरण

#!/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"

जब try ब्लॉक में एक एक्सेप्शन फेंका जाता है, तो निष्पादन तुरंत finally ब्लॉक पर चला जाता है। finally ब्लॉक में सभी स्टेटमेंट्स निष्पादित होने के बाद, एक्सेप्शन फिर से उठाया जाता है और अगले उच्च लेयर के try-except स्टेटमेंट में मौजूद except स्टेटमेंट्स द्वारा हैंडल किया जाता है।


  1. - Python का Sys मॉड्यूल क्या है?

    परिचय Python में sys मॉड्यूल Python इंटरप्रेटर के बारे में मूल्यवान जानकारी प्रदान करता है। आप इसका उपयोग Python इंटरप्रेटर के कॉन्स्टेंट्स, फंक्शन्स और मेथड्स के बारे में विवरण प्राप्त करने के लिए भी कर सकते हैं। शुरुआत करना sys मॉड्यूल Python के साथ पैकेज्ड आता है, जिसका अर्थ है कि आपको इसे PIP प

  1. - Python का OS मॉड्यूल क्या है?

    परिचय Python में OS मॉड्यूल विभिन्न फंक्शन्स के साथ आता है जो डेवलपर्स को उस ऑपरेटिंग सिस्टम के साथ इंटरैक्ट करने में सक्षम बनाता है जिस पर वे वर्तमान में काम कर रहे हैं। इस लेख में हम मुख्य रूप से डायरेक्टरी/फोल्डर बनाना और हटाना, डायरेक्टरी का नाम बदलना और फाइल हैंडलिंग की मूल बातें सीखेंगे। बिना

  1. पायथन में CGI क्या है? पायथन में CGI क्या है?

    कॉमन गेटवे इंटरफ़ेस, या CGI, HTTP सर्वर जैसे सूचना सर्वरों के साथ इंटरफ़ेस करने के लिए बाहरी गेटवे प्रोग्राम्स के लिए एक मानक है।वर्तमान संस्करण CGI/1.1 है और CGI/1.2 प्रगति पर है।वेब ब्राउज़िंगCGI की अवधारणा को समझने के लिए, आइए देखें कि जब हम किसी विशेष वेब पेज या URL को ब्राउज़ करने के लिए एक हाइ