Python अपवाद प्रबंधन में महारत हासिल करें | try-except का उपयोग कैसे करें और सर्वोत्तम प्रथाएँ

目次

1. पायथन में अपवाद हैंडलिंग का अवलोकन

पायथन में अपवाद हैंडलिंग क्या है?

कार्यक्रम के निष्पादन के दौरान, अप्रत्याशित त्रुटियाँ हो सकती हैं। इन्हें “अपवाद” कहा जाता है, और जब ये होती हैं, तो कार्यक्रम आमतौर पर चलना बंद कर देता है। पायथन अपवाद हैंडलिंग प्रदान करता है ताकि इन त्रुटियों का प्रबंधन किया जा सके। अपवाद हैंडलिंग का उपयोग करके, आप त्रुटियों का उचित प्रतिक्रिया दे सकते हैं और सुनिश्चित कर सकते हैं कि कार्यक्रम सुचारू रूप से चलता रहे।

अपवाद हैंडलिंग क्यों महत्वपूर्ण है?

अपवाद हैंडलिंग उपयोगकर्ताओं के लिए कार्यक्रम को सुचारू रूप से चलाने के लिए महत्वपूर्ण है, भले ही त्रुटियाँ हों। यह त्रुटियों के कारण की पहचान करने और डिबगिंग को आसान बनाने में भी मदद करता है, जो अंततः अधिक विश्वसनीय कार्यक्रमों की ओर ले जाता है।

Ad

2. try-except स्टेटमेंट क्या है?

मूल सिंटैक्स

पायथन में, try-except स्टेटमेंट संभावित त्रुटियों को संभालने के लिए उपयोग किया जाता है। वह कोड जो त्रुटि का कारण बन सकता है, try ब्लॉक के अंदर लिखा जाता है, जबकि except ब्लॉक में त्रुटि होने पर हैंडलिंग तंत्र होता है। यहाँ मूल सिंटैक्स है:

try:
    # Code that may cause an error
except SomeError:
    # Code to handle the error

यदि try ब्लॉक के अंदर का कोड बिना त्रुटि के चलता है, तो except ब्लॉक को नजरअंदाज कर दिया जाता है। हालांकि, यदि त्रुटि होती है, तो कार्यक्रम except ब्लॉक में उपयुक्त हैंडलिंग कोड को निष्पादित करता है।

सामान्य उदाहरण: शून्य से भाग देने की त्रुटि

शून्य से भाग देने का प्रयास ZeroDivisionError का परिणाम देता है। इस त्रुटि को निम्नलिखित तरीके से संभाला जा सकता है:

try:
    result = 10 / 0
except ZeroDivisionError:
    print("Cannot divide by zero")

Ad
RUNTEQ(ランテック)|超実戦型エンジニア育成スクール

3. सामान्य अपवाद और उन्हें संभालने का तरीका

1. ZeroDivisionError

यह अपवाद तब होता है जब शून्य से भाग देने का प्रयास किया जाता है। उदाहरण के लिए, किसी संख्या को 0 से भाग देने का प्रयास पायथन में स्वचालित रूप से ZeroDivisionError उत्पन्न करेगा।

try:
    result = 10 / 0
except ZeroDivisionError:
    print("Cannot divide by zero")

2. ValueError

ValueError तब होता है जब किसी फंक्शन या ऑपरेशन को अमान्य मान पास किया जाता है। निम्नलिखित उदाहरण में, हम एक स्ट्रिंग को, जो वैध संख्या नहीं है, पूर्णांक में बदलने का प्रयास करते हैं।

try:
    num = int("not_a_number")
except ValueError:
    print("Invalid value")

3. कई अपवादों को संभालना

यदि आप एक साथ कई अपवादों को संभालना चाहते हैं, तो आप except स्टेटमेंट का उपयोग कई अपवादों को एक साथ समूहित करके कर सकते हैं:

try:
    result = 10 / "string"
except (ZeroDivisionError, TypeError):
    print("An error occurred")
Ad

4. अपवाद ऑब्जेक्ट्स का उपयोग करके त्रुटि विवरण प्राप्त करना

as का उपयोग अपवाद ऑब्जेक्ट्स को कैप्चर करने के लिए

except स्टेटमेंट के साथ, आप as कीवर्ड का उपयोग अपवाद ऑब्जेक्ट को कैप्चर करने के लिए कर सकते हैं। इससे आपको त्रुटि विवरण का संदर्भ देने या आगे के विश्लेषण के लिए उन्हें लॉग करने की अनुमति मिलती है।

try:
    a = 10 / 0
except ZeroDivisionError as e:
    print(f"An error occurred: {e}")

इस कोड में, जब ZeroDivisionError होता है, तो त्रुटि संदेश चर e में संग्रहीत हो जाता है और आउटपुट में प्रदर्शित हो जाता है।

Ad

5. finally ब्लॉक का उपयोग

finally क्या है?

finally ब्लॉक का उपयोग कोड को निष्पादित करने के लिए किया जाता है, चाहे अपवाद हो या न हो। यह विशेष रूप से फाइलें बंद करने या डेटाबेस कनेक्शन साफ करने जैसे कार्यों के लिए उपयोगी है, जो सुनिश्चित करता है कि आवश्यक ऑपरेशन हमेशा किए जाते हैं।

try:
    file = open("test.txt", "r")
except FileNotFoundError:
    print("File not found")
finally:
    print("File operation completed")

संसाधनों की सफाई

finally ब्लॉक कार्यक्रम के अंत में संसाधनों को रिलीज करने के लिए उपयोगी है। उदाहरण के लिए, आप finally का उपयोग करके सुनिश्चित कर सकते हैं कि फाइल हमेशा बंद हो।

try:
    file = open("data.txt", "r")
    # Perform file operations
finally:
    file.close()

finally ब्लॉक का उपयोग करके, आप सुनिश्चित कर सकते हैं कि फाइल ठीक से बंद हो, भले ही त्रुटि हो।

Ad

6. raise के साथ अपवाद उत्पन्न करना

raise की भूमिका

raise स्टेटमेंट डेवलपर्स को मैन्युअल रूप से एक्सेप्शन ट्रिगर करने की अनुमति देता है। यह इनपुट वैलिडेशन या शर्तों को लागू करने के लिए स्पष्ट रूप से एरर थ्रो करके उपयोगी होता है।

def check_value(value):
    if value < 0:
        raise ValueError("Negative values are not allowed")

कस्टम एक्सेप्शन का उदाहरण

विशिष्ट शर्तों के लिए एरर उठाकर, आप अमान्य इनपुट और अप्रत्याशित व्यवहार को रोक सकते हैं।

Ad

7. पाइथन में एक्सेप्शन हैंडलिंग के लिए सर्वश्रेष्ठ प्रैक्टिसेज

1. अत्यधिक एक्सेप्शन हैंडलिंग से बचें

अधिक एक्सेप्शन हैंडलिंग कोड को पढ़ने और डिबग करने में कठिन बना सकती है। एक्सेप्शन केवल उन कोड हिस्सों में उपयोग किए जाने चाहिए जहाँ त्रुटियों की संभावना अधिक हो, न कि सामान्य प्रोग्राम फ्लो में एकीकृत किए जाएँ।

2. एरर रिकॉर्ड करने के लिए लॉगिंग का उपयोग करें

जब कोई एक्सेप्शन उत्पन्न होता है, तो एरर मैसेज को लॉग करना महत्वपूर्ण है। यह बाद में त्रुटि के कारण को ट्रैक करने में मदद करता है। नीचे दिया गया उदाहरण logging मॉड्यूल का उपयोग कैसे करें दिखाता है:

import logging

try:
    a = 10 / 0
except ZeroDivisionError as e:
    logging.error(f"An error occurred: {e}")

3. व्यापक except स्टेटमेंट्स का उपयोग करने से बचें

यह सलाह दी जाती है कि व्यापक except Exception स्टेटमेंट के बजाय विशिष्ट त्रुटियों को पकड़ें। एक साथ बहुत सारी त्रुटियों को पकड़ना सटीक समस्या की पहचान को कठिन बना सकता है, इसलिए विशिष्ट एक्सेप्शन को अलग‑अलग हैंडल करना बेहतर दृष्टिकोण है।

Ad
年収訴求