"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > पायथन में अपवाद हैंडलिंग को लागू करने के लिए सर्वोत्तम अभ्यास

पायथन में अपवाद हैंडलिंग को लागू करने के लिए सर्वोत्तम अभ्यास

2024-09-27 को प्रकाशित
ब्राउज़ करें:214

Best Practices for Implementing Exception Handling in Python

मजबूत और रखरखाव योग्य एप्लिकेशन बनाने के लिए प्रभावी अपवाद हैंडलिंग कोड लिखना आवश्यक है।
पायथन में अपवाद हैंडलिंग कोड लिखने के लिए कुछ सर्वोत्तम अभ्यास नीचे दिए गए हैं:

1. केवल वही पकड़ें जिसे आप संभाल सकते हैं

विशिष्ट रहो:

  • विस्तृत अपवाद खंड का उपयोग करने के बजाय विशिष्ट अपवादों को पकड़ें।
  • यह सुनिश्चित करता है कि केवल वे अपवाद पकड़े जाएं जिनकी आप अपेक्षा करते हैं और जानते हैं कि उन्हें कैसे संभालना है।
try:
    # Code that might raise an exception
except ValueError as e:
    print(f"Value error occurred: {e}")

2. खंडों को छोड़कर नंगे से बचें

विशिष्ट अपवाद पकड़ें:

  • अपवाद प्रकार निर्दिष्ट किए बिना सिवाय: का उपयोग करने से बचें।
  • यह अप्रत्याशित त्रुटियां पकड़ सकता है और डिबगिंग को कठिन बना सकता है।
try:
    # Code that might raise an exception
except Exception as e:  # Catch all exceptions if necessary
    print(f"An error occurred: {e}")

3. प्रयास-छोड़कर-अन्यथा-अंततः ब्लॉक का उपयोग करें

  • प्रयास करें: वह कोड यहां रखें जो अपवाद उत्पन्न कर सकता है।
  • सिवाय: इस ब्लॉक में अपवादों को संभालें।
  • अन्यथा: यदि प्रयास ब्लॉक में कोई अपवाद नहीं उठाया गया तो इस ब्लॉक को निष्पादित करें।
  • अंततः: इस ब्लॉक को निष्पादित करें चाहे कोई अपवाद उठाया गया हो, अक्सर सफाई के लिए उपयोग किया जाता है।
try:
    # Code that might raise an exception
except ValueError as e:
    print(f"Value error: {e}")
else:
    print("No exceptions occurred.")
finally:
    print("This will always be executed.")

4. लॉग अपवाद

  • अपवादों को लॉग करने के लिए लॉगिंग मॉड्यूल का उपयोग करें।
  • लॉगिंग अंतिम उपयोगकर्ताओं को त्रुटियों का खुलासा किए बिना उत्पादन में समस्याओं का निदान करने में मदद करती है।
import logging

logging.basicConfig(level=logging.ERROR)

try:
    # Code that might raise an exception
except Exception as e:
    logging.error(f"An error occurred: {e}")

5. आवश्यकता पड़ने पर अपवादों को दोबारा बढ़ाएं

  • यदि आप कोई अपवाद पकड़ते हैं लेकिन उसे पूरी तरह से संभाल नहीं पाते हैं, तो इसे फिर से बढ़ाने पर विचार करें ताकि इसे कहीं और से संभाला जा सके।
try:
    # Code that might raise an exception
except ValueError as e:
    logging.error(f"Value error: {e}")
    raise  # Re-raise the exception

6. संसाधन प्रबंधन के लिए संदर्भ प्रबंधकों का उपयोग करें

  • फ़ाइलें, सॉकेट, या डेटाबेस कनेक्शन जैसे संसाधनों को प्रबंधित करने के लिए संदर्भ प्रबंधकों (कथन के साथ) का उपयोग करें।
  • यह सुनिश्चित करता है कि अपवाद उठाए जाने पर भी संसाधन ठीक से जारी किए जाते हैं।
with open('file.txt', 'r') as file:
    content = file.read()

7. शोभायमान पतन

-अपने एप्लिकेशन को क्रैश होने की अनुमति देने के बजाय, फ़ॉलबैक तंत्र या उपयोगकर्ता-अनुकूल त्रुटि संदेश प्रदान करें।

  • उदाहरण के लिए, यदि कोई कॉन्फ़िगरेशन फ़ाइल गुम है, तो आप इसके बजाय डिफ़ॉल्ट सेटिंग्स का उपयोग कर सकते हैं।
try:
    with open('config.json', 'r') as file:
        config = json.load(file)
except FileNotFoundError:
    print("Config file not found, using defaults.")
    config = {"default": "value"}

8. अपवादों को निगलने से बचें

  • बिना कोई कार्रवाई किए अपवाद न पकड़ें।
  • अपवादों को अनदेखा करने से बग छिप सकते हैं और एप्लिकेशन अप्रत्याशित रूप से व्यवहार कर सकता है।
try:
    # Code that might raise an exception
except Exception as e:
    pass  # Bad practice - you're ignoring the error

9. दस्तावेज़ अपवाद

  • उन अपवादों को दस्तावेज़ित करने के लिए डॉकस्ट्रिंग्स का उपयोग करें जिन्हें आपके फ़ंक्शन उठा सकते हैं।
  • इससे अन्य डेवलपर्स को यह समझने में मदद मिलती है कि किन अपवादों की अपेक्षा की जाए और उन्हें कैसे संभाला जाए।
def divide(a, b):
    """
    Divides two numbers.

    :param a: Numerator.
    :param b: Denominator.
    :return: The result of the division.
    :raises ZeroDivisionError: If the denominator is zero.
    """
    if b == 0:
        raise ZeroDivisionError("Cannot divide by zero.")
    return a / b

10. उपयुक्त होने पर कस्टम अपवादों का उपयोग करें

  • अपने एप्लिकेशन में विशिष्ट त्रुटि स्थितियों को दर्शाने के लिए कस्टम अपवाद बनाएं।
  • यह आपके कोड को अधिक पठनीय और बनाए रखने में आसान बना सकता है।
class InvalidInputError(Exception):
    """Exception raised for invalid inputs."""
    pass

def process_input(value):
    if not isinstance(value, int):
        raise InvalidInputError("Input must be an integer.")
    return value * 2

11. टेस्ट एक्सेप्शन हैंडलिंग

  • यह सुनिश्चित करने के लिए परीक्षण लिखें कि आपका अपवाद प्रबंधन अपेक्षा के अनुरूप काम करता है।
  • सामान्य और असाधारण दोनों मामलों का परीक्षण करने के लिए यूनिटटेस्ट या पाइटेस्ट जैसे ढांचे का उपयोग करें।
def test_divide():
    assert divide(10, 2) == 5
    with pytest.raises(ZeroDivisionError):
        divide(10, 0)

12. अपवादों का अति प्रयोग करने से बचें

असाधारण मामलों के लिए अपवादों का उपयोग करें:

  • अपवादों का उपयोग अप्रत्याशित स्थितियों के लिए किया जाना चाहिए, नियमित नियंत्रण प्रवाह तंत्र के रूप में नहीं।
  • उदाहरण के लिए, लूप के अंत जैसी पूर्वानुमानित स्थितियों को संभालने के लिए अपवादों का उपयोग करने से बचें।
# Bad practice: using exceptions for control flow
try:
    while True:
        value = next(iterator)
except StopIteration:
    pass  # End of iteration

13. संदर्भ के लिए श्रृंखला अपवाद

  • पायथन आपको नया अपवाद उठाते समय मूल संदर्भ को संरक्षित करने के लिए अपवादों को श्रृंखलाबद्ध करने की अनुमति देता है।
  • संबंधित अपवादों को लिंक करने के लिए from का उपयोग करें।
try:
    result = process_input(input_value)
except InvalidInputError as e:
    raise ValueError("Failed to process input") from e

इन सर्वोत्तम प्रथाओं का पालन करके, आप अधिक मजबूत, रखरखाव योग्य और पठनीय अपवाद हैंडलिंग कोड लिख सकते हैं जो त्रुटियों को खूबसूरती से प्रबंधित करता है और आपके एप्लिकेशन की विश्वसनीयता को बढ़ाता है।


साधन

  • अपवाद प्रबंधन पर पायथन का आधिकारिक दस्तावेज़ीकरण
  • पायथन का लॉगिंग मॉड्यूल दस्तावेज़ीकरण
  • पीईपी 8 - पायथन कोड के लिए स्टाइल गाइड (अपवादों सहित सामान्य कोडिंग प्रथाओं के लिए)
  • रियल पायथन - अपवाद हैंडलिंग
विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/kyotanakada/best-practices-for-implementing-exception-handling-in-python-1ni1?1 यदि कोई उल्लंघन है, तो कृपया हटाने के लिए स्टडी_गोलंग@163.com पर संपर्क करें यह
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3