Python अपवाद ह्यान्डलिङ्ग गाइड | try-except प्रयोग अभ्यास

目次

1. Python मा अपवाद ह्यान्डलिंगको सारांश

Python को अपवाद ह्यान्डलिंग के हो?

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

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

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

2. try-except कथन के हो?

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

Python को try-except कथनले, त्रुटि हुन सक्ने कोडलाई try ब्लकभित्र लेख्छ, र त्रुटि भएमा प्रक्रिया except ब्लकमा लेखिन्छ। तल मूलभूत संरचना हो:
try:
    # त्रुटि हुन सक्ने कोड
except SomeError:
    # त्रुटि ह्यान्डल गर्ने कोड
try ब्लकभित्रको कोड सामान्य रूपमा चल्छ भने, except ब्लकलाई बेवास्ता गरिन्छ, तर त्रुटि भएमा, निर्दिष्ट अपवादको लागि उपयुक्त प्रक्रिया गरिन्छ।

सामान्य उदाहरण: शून्य विभाजन त्रुटि

शून्यले भाग गर्न खोज्दा, ZeroDivisionError उत्पन्न हुन्छ। यो त्रुटि तलको जस्तै ह्यान्डल गर्न सकिन्छ:
try:
    result = 10 / 0
except ZeroDivisionError:
    print("शून्यले भाग गर्न सकिँदैन")
年収訴求

3. सामान्य अपवादहरू र तिनीहरूको ह्यान्डलिङ्ग तरिका

1. ZeroDivisionError

यो अपवाद शून्यले विभाजन गर्ने प्रयास गर्दा उत्पन्न हुन्छ। उदाहरणका लागि, यदि संख्यालाई 0 ले भाग गर्न खोजियो भने, Python स्वचालित रूपमा ZeroDivisionError फ्याँक्छ।
try:
    result = 10 / 0
except ZeroDivisionError:
    print("शून्यले भाग गर्न सकिँदैन")

2. ValueError

ValueError तब उत्पन्न हुन्छ जब कुनै कार्य वा अपरेसनमा अनुपयुक्त मान पास गरिन्छ। तलको उदाहरणमा, संख्यामा रूपान्तरण गर्न नसकिने स्ट्रिङलाई int() द्वारा रूपान्तरण गर्ने प्रयास गरिएको छ।
try:
    num = int("not_a_number")
except ValueError:
    print("अवैध मान हो")

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

यदि तपाईँ एकै पटक धेरै अपवादहरूलाई ह्यान्डल गर्न चाहनुहुन्छ भने, except कथनमा धेरै अपवादहरूलाई एकै साथ ह्यान्डल गर्न सकिन्छ:
try:
    result = 10 / "string"
except (ZeroDivisionError, TypeError):
    print("त्रुटि भयो")

4. अपवाद वस्तु प्रयोग गरेर त्रुटिको विस्तृत जानकारी प्राप्ति

as द्वारा अपवाद वस्तु प्राप्ति

except वाक्यमा, as कुञ्जीशब्द प्रयोग गरेर अपवाद वस्तु प्राप्त गर्न सकिन्छ। यसले त्रुटिको विस्तृत जानकारी हेर्न वा लगमा रेकर्ड गर्न सम्भव बनाउँछ।
try:
    a = 10 / 0
except ZeroDivisionError as e:
    print(f"त्रुटि भयो: {e}")
यो कोडमा, ZeroDivisionError उत्पन्न हुँदा, चलeमा त्रुटि सन्देश संग्रहित हुन्छ, र त्यसको विस्तृत जानकारी देखाउन सकिन्छ।

5. finally ब्लकको प्रयोग

finally के हो?

finally ब्लकलाई, अपवादको उत्पन्नसँग सम्बन्ध नहुनै, सधैं चल्ने कोड लेख्न प्रयोग गरिन्छ। फाइल खोल्ने कार्य वा डाटाबेस जडानको सफा गर्ने जस्ता, अनिवार्य रूपमा गर्नुपर्ने कार्यहरूमा उपयुक्त छ।
try:
    file = open("test.txt", "r")
except FileNotFoundError:
    print("फाइल फेला परेन")
finally:
    print("फाइल अपरेशन समाप्त गरियो")

संसाधन सफा गर्ने

finally प्रोग्रामको अन्त्यमा सधैं संसाधन मुक्त गर्न उपयोगी हुन्छ। उदाहरणका लागि, तल जस्तै फाइललाई निश्चित रूपमा बन्द गर्न finally प्रयोग गरिन्छ।
try:
    file = open("data.txt", "r")
    # फाइल अपरेशन
finally:
    file.close()
यसरी, finally ब्लक प्रयोग गरेर, फाइल निश्चित रूपमा बन्द हुने कुरा सुनिश्चित गर्न सकिन्छ।

6. raise द्वारा अपवादको म्यानुअल उत्पन्न

raise को भूमिका

raise कथन प्रयोग गर्दा, विकासकर्ताले जानबुझी अपवाद उत्पन्न गर्न सक्छन्। यसले इनपुटको प्रमाणीकरण वा शर्तहरूमा आधारित त्रुटिहरूलाई स्पष्ट रूपमा फ्याँक्न सम्भव बनाउँछ।
def check_value(value):
    if value < 0:
        raise ValueError("नकारात्मक मान अनुमति छैन")

कस्टम अपवादको उदाहरण

विशिष्ट शर्तहरूमा त्रुटि फ्याँक्दा, अमान्य इनपुटलाई पूर्वमा रोक्न सकिन्छ। यसले अनपेक्षित व्यवहारलाई रोक्न सम्भव बनाउँछ।

7. Python मा अपवाद ह्यान्डलिंगको सर्वश्रेष्ठ अभ्यासहरू

1. अत्यधिक अपवाद ह्यान्डलिंगबाट बच्नुहोस्

यदि अपवाद ह्यान्डलिंगको दुरुपयोग गरियो भने, कोडको पढ्नयोग्यता घट्छ र डिबगिङ कठिन हुन्छ। अपवाद ह्यान्डलिंगलाई केवल सम्भावित त्रुटि हुने भागहरूमा मात्र प्रयोग गर्नुहोस्, सामान्य प्रोग्राम प्रवाहमा समावेश नगर्नुहोस्।

2. त्रुटिहरूलाई रेकर्ड गर्न लग प्रयोग गर्नुहोस्

यदि अपवाद उत्पन्न हुन्छ भने, त्यसको त्रुटि सन्देशलाई लगमा रेकर्ड गर्नु महत्त्वपूर्ण छ। यसले पछि त्रुटिको कारण पत्ता लगाउन मद्दत गर्छ। तल logging मोड्युल प्रयोग गरेको उदाहरण छ।
import logging

try:
    a = 10 / 0
except ZeroDivisionError as e:
    logging.error(f"त्रुटि उत्पन्न भयो: {e}")

3. व्यापक except को प्रयोगबाट बच्नुहोस्

अपवाद ह्यान्डलिंगमा, सकेसम्म विशिष्ट त्रुटिहरूलाई क्याच गर्ने सिफारिस गरिन्छ। व्यापक except Exception प्रयोग गर्दा समस्याको विवरण नदेखिने सम्भावना बढ्छ, त्यसैले विशेष त्रुटिहरूलाई अलग‑अलग रूपमा ह्यान्डल गर्नु राम्रो हुन्छ।
年収訴求