Python अपवाद ह्यान्डलिङ्ग परिचय: आधारभूतदेखि सर्वोत्तम अभ्याससम्म

目次

1. Python को अपवाद के हो

Python को अपवाद प्रोग्रामको कार्यान्वयनको क्रममा उत्पन्न हुने त्रुटिको एक प्रकार हो। सामान्यतया, प्रोग्राम माथिबाट तलसम्म कोडलाई क्रमशः चलाउँछ, तर विशेष परिस्थितिमा त्रुटि आएमा, सो भागको कोडको कार्यान्वयन रोकिदिन्छ र अपवाद उत्पन्न हुन्छ। उदाहरणका लागि, शून्यले भाग गर्न खोज्दा ZeroDivisionError उत्पन्न हुन्छ, र अवस्थित नभएको सूचीको इन्डेक्समा पहुँच गर्न खोज्दा IndexError उत्पन्न हुन्छ।

1.1 सामान्य अपवादका प्रकारहरू

Python मा धेरै निर्मित अपवादहरू छन्। तल केही सामान्य उदाहरणहरू देखाइएका छन्।
  • ValueError: जब कार्यले उपयुक्त नभएको मान प्राप्त गर्छ।
  • TypeError: जब अपरेशन वा कार्यलाई गलत डेटा प्रकारमा लागू गरिन्छ।
  • IndexError: जब अनुक्रम (जस्तै सूची) को सीमा बाहिरको इन्डेक्समा पहुँच गरिन्छ।
  • ZeroDivisionError: जब शून्यले भाग गर्न प्रयास गरिन्छ।
यी अपवादहरूले प्रोग्रामको कार्यान्वयनको क्रममा अनपेक्षित त्रुटि आएमा उपयोगी निदान जानकारी प्रदान गर्छन्।

2. tryexcept द्वारा मूलभूत अपवाद ह्यान्डलिंग

Python मा, tryexcept प्रयोग गरेर अपवाद ह्यान्डलिंग गरिन्छ। यसले प्रोग्रामलाई त्रुटिले रोकिएर नरोकिने बनाउँछ, र त्रुटि आए पनि प्रोग्रामको अन्य भागहरू चलिरहनेछ।

2.1 मूलभूत संरचना

try ब्लकभित्र त्रुटि हुनसक्ने कोड राखिन्छ, र except ब्लकभित्र त्रुटि आएमा चल्ने कोड लेखिन्छ।
try:
    result = 10 / 0
except ZeroDivisionError:
    print("शून्यले भाग गर्न सकिँदैन।")
यस उदाहरणमा, ZeroDivisionError उत्पन्न भएमा, except ब्लक चलाइन्छ, र “शून्यले भाग गर्न सकिँदैन।” भनेर आउटपुट हुन्छ।

2.2 बहु except ब्लकहरू

यदि विभिन्न प्रकारका अपवादहरूलाई अलग‑अलग ह्यान्डल गर्न चाहनुहुन्छ भने, बहु except ब्लकहरू प्रयोग गर्न सकिन्छ। उदाहरणका लागि, NameError वा TypeError जस्ता विभिन्न त्रुटिहरूमा अलग‑अलग प्रक्रिया गर्न सकिन्छ।
try:
    print(a)
except NameError:
    print('चल a को मान परिभाषित गरिएको छैन।')
except TypeError:
    print('अवैध प्रकार प्रयोग गरिएको छ।')
यस कोडमा, यदि a परिभाषित छैन भने, NameError उत्पन्न हुन्छ, र सम्बन्धित सन्देश देखाइन्छ।
年収訴求

3. बहु अपवादहरूलाई एकै साथ ह्यान्डल गर्ने तरिका

यदि प्रोग्राममा विभिन्न प्रकारका बहु अपवादहरू उत्पन्न हुन सक्छन् भने, तिनीहरूलाई एकै except ब्लकमा समेटेर ह्यान्डल गर्न सकिन्छ।

3.1 बहु अपवादहरूलाई एकै except ब्लकमा ह्यान्डल गर्नु

तलको जस्तै, except ब्लकमा बहु अपवादहरूलाई ट्युपलको रूपमा निर्दिष्ट गर्न सकिन्छ।
try:
    num = int(input("कृपया संख्या प्रविष्ट गर्नुहोस्: "))
    result = 10 / num
except (ValueError, ZeroDivisionError):
    print("अमान्य इनपुट गरिएको छ वा शून्यबाट भाग गर्ने प्रयास गरिएको छ।")
यस उदाहरणमा, प्रयोगकर्ताले अमान्य मान प्रविष्ट गरे वा शून्य प्रविष्ट गरेर भाग गर्ने प्रयास गरेमा, तिनीहरूलाई समेटेर ह्यान्डल गरी, “अमान्य इनपुट गरिएको छ वा शून्यबाट भाग गर्ने प्रयास गरिएको छ।” भनेर आउटपुट गर्छ।

3.2 अभिभावक वर्ग प्रयोग गरेर अपवादहरूलाई समेटेर ह्यान्डल गर्नु

Exception वर्ग अधिकांश बिल्ट‑इन अपवादहरूको अभिभावक वर्ग हो। सबै अपवादहरूलाई क्याच गर्न चाहनुहुन्छ भने, यो वर्ग प्रयोग गर्न सकिन्छ। तर, यो विधि अत्यधिक व्यापक भएकोले, प्रयोग गर्दा सावधानी आवश्यक छ।
try:
    # त्रुटि उत्पन्न हुन सक्ने कोड
except Exception as e:
    print("त्रुटि उत्पन्न भयो:", e)
यस विधिमा, जुनसुकै अपवाद उत्पन्न भए पनि क्याच गरिन्छ, र सन्देश देखाइन्छ। तर, सम्भव भएसम्म विशिष्ट अपवादहरूलाई ह्यान्डल गर्ने गरी डिजाइन गर्न सिफारिस गरिन्छ।

4. अपवाद उत्पन्न गर्ने (raise)

प्रोग्राम चलिरहेको बेला, यदि विशेष शर्तहरू पूरा हुँदैनन् भने, तपाईंले म्यानुअली अपवाद उत्पन्न गर्न सक्नुहुन्छ। यसका लागि, raise कथन प्रयोग गर्नुहोस्।

4.1 raise कथनको प्रयोग

तलको उदाहरणमा, नकारात्मक मान पास गरिएमा ValueError उत्पन्न गरिन्छ।
def check_value(value):
    if value < 0:
        raise ValueError("नकारात्मक मान अनुमति छैन।")
    return value

try:
    result = check_value(-1)
except ValueError as e:
    print(e)
यस उदाहरणमा, -1 नामक नकारात्मक मान check_value कार्यमा पास गरिएपछि, ValueError उत्पन्न हुन्छ र “नकारात्मक मान अनुमति छैन।” भन्ने सन्देश देखाइन्छ।

4.2 raise को प्रयोग

raise कथनलाई कस्टम अपवाद वर्ग परिभाषित गर्दा पनि प्रयोग गर्न सकिन्छ। आफ्नै अपवाद सिर्जना गरेर, विशेष शर्तहरूमा त्यसलाई उत्पन्न गरेर, प्रोग्रामको त्रुटि ह्यान्डलिङलाई अझ लचिलो बनाउन सकिन्छ।
年収訴求

5. अपवाद जानकारी प्राप्ति

जब अपवाद उत्पन्न हुन्छ, त्यसको विस्तृत जानकारी प्राप्त गरेर समस्या निदान र डिबगिङलाई सजिलो बनाउन सकिन्छ।except ब्लकमा as क्लज प्रयोग गरेर, अपवाद वस्तु प्राप्त गर्न सकिन्छ।

5.1 as क्लजको प्रयोग

तलको उदाहरणमा, अपवाद वस्तुलाई e को रूपमा प्राप्त गरी, त्यसको सन्देश देखाइन्छ।
try:
    result = 10 / 0
except ZeroDivisionError as e:
    print("त्रुटि भयो:", e)
यस कोडमा, ZeroDivisionError उत्पन्न हुँदा, “त्रुटि भयो: division by zero” भन्ने सन्देश देखाइन्छ। अपवाद वस्तुमा, अपवादको प्रकार र त्रुटि सन्देश जस्ता विस्तृत जानकारीहरू समावेश हुन्छन्।

5.2 अपवाद वस्तुको उपयोग

अपवाद वस्तु केवल त्रुटि सन्देश देखाउन मात्र होइन, लग रेकर्ड गर्न र विशेष त्रुटिहरूको लागि अतिरिक्त प्रक्रिया गर्न पनि प्रयोग गर्न सकिन्छ। उदाहरणका लागि, लग फाइलमा त्रुटि सन्देश लेखेर, पछि डिबगिङमा उपयोगी बनाइन्छ।

6. अपवाद ह्यान्डलिंगको सर्वोत्तम अभ्यास

प्रभावकारी अपवाद ह्यान्डलिंगले कार्यक्रमको मजबुती र विश्वसनीयता सुधार्छ। तल, Python मा अपवाद ह्यान्डलिंगको केही सर्वोत्तम अभ्यासहरू प्रस्तुत गरिएका छन्।

6.1 विशिष्ट अपवादहरूलाई समात्नुहोस्

जति सम्भव हो, विशिष्ट अपवादहरूलाई समात्ने प्रयास गर्नुहोस्। व्यापक Exception लाई समात्नुको सट्टा, ValueError वा TypeError जस्ता अपेक्षित विशिष्ट अपवादहरूलाई समात्दा, त्रुटि ह्यान्डलिंग स्पष्ट र उद्देश्यपूर्ण हुन्छ।

6.2 अपवादलाई लगमा रेकर्ड गर्नुहोस्

त्रुटि सन्देशलाई लगमा रेकर्ड गर्दा, पछि समस्याको कारण पत्ता लगाउन सजिलो हुन्छ विशेष गरी ठूला कार्यक्रम वा प्रणालीहरूमा, अपवाद उत्पन्न हुँदा जानकारी रेकर्ड गर्नु महत्त्वपूर्ण हुन्छ।

6.3 सुन्दर गिरावट

अपवाद उत्पन्न भए पनि कार्यक्रम पूर्ण रूपमा क्र्यास नहोस् भनेर, सुन्दर गिरावट (graceful degradation) को डिजाइन गर्नु महत्त्वपूर्ण छ। उदाहरणका लागि, प्रयोगकर्तालाई बुझ्न सजिलो त्रुटि सन्देश देखाउने वा वैकल्पिक कार्यहरू चलाउनेले कार्यक्रमको विश्वसनीयता बढाउन सक्छ।

6.4 अनावश्यक अपवाद ह्यान्डलिंगबाट बच्नुहोस्

सबै अपवादहरूलाई समातेर केही नगरी बेवास्ता गर्नुबाट बच्नुहोस्। यसले डिबगिङ कठिन बनाउँछ र कार्यक्रमको अनपेक्षित व्यवहार उत्पन्न गर्न सक्छ। अपवाद समात्दा कम्तिमा त्रुटि सन्देश रेकर्ड गर्नु वा उपयुक्त ह्यान्डलिंग गर्नु आवश्यक छ।

6.5 finally ब्लकको उपयोग

finally ब्लकलाई, अपवादको उपस्थिती वा अनुपस्थितीमा पनि अनिवार्य रूपमा चल्ने कोड लेख्न प्रयोग गरिन्छ। उदाहरणका लागि, फाइल बन्द गर्ने वा स्रोत मुक्त गर्ने जस्ता अनिवार्य कार्यहरू यहाँ लेखिन्छ।
try:
    file = open("example.txt", "r")
    # फाइल पढ्ने प्रक्रिया
except FileNotFoundError:
    print("फाइल फेला परेन।")
finally:
    file.close()
यस उदाहरणमा, फाइल खोल्न असफल भए पनि, finally ब्लकले फाइललाई निश्चित रूपमा बन्द गर्छ।

7. सारांश

Python को अपवाद ह्यान्डलिङले कार्यक्रमको विश्वसनीयता बढाउँछ, त्रुटि उत्पन्न हुँदा उपयुक्त प्रतिक्रिया सम्भव बनाउने महत्वपूर्ण प्रविधि हो।tryexcept प्रयोग गरेर त्रुटि पक्रनु, raise द्वारा कस्टम अपवाद सिर्जना गरेर कोडको लच र मर्मत सम्भार क्षमता सुधार्न सकिन्छ।
  • अपवाद के हो बुझ्न, सामान्य अपवादका प्रकारहरू बारे सिक्यौं।
  • try र <>except प्रयोग गरेर आधारभूत अपवाद ह्यान्डलिङ गर्ने तरिका सिक्यौं।
  • एकै except ब्लकमा धेरै अपवादहरूलाई समेटेर ह्यान्डल गर्नेेर्यौं।
  • raise कथन प्रयोग गरेर अपवाद उत्पन्न गर्ने तरिका र यसको प्रयोगहरू बारे सिक्यौं।
  • अपवाद वस्तु प्राप्त गरेर विस्तृत त्रुटि जानकारी प्राप्त गर्ने तरिका सिक्यौं।
  • अन्तमा, अपवाद ह्यान्डलिङको सर्वश्रेष्ठ अभ्यासहरूबारे विचार गरी, प्रभावकारी त्रुटि ह्यान्डलिङ डिजाइनको बारेमा चर्चा गर्यौं।
अपवाद ह्यान्डलिङ कार्यक्रमको विश्वसनीयता सुनिश्चित गर्न अनिवार्य प्रविधि हो। यी प्रविधिहरू प्रयोग गरेर, प्रयोगकर्ता‑मैत्री र बलियो Python अनुप्रयोग विकास गरौं।