पायथन में एक्सेप्शन हैंडलिंग
पायथन में अन्य प्रोग्रामिंग भाषाओं की तुलना में बहुत अधिक ऐसी स्थितियाँ होती हैं जो एक्सेप्शन उत्पन्न करती हैं।
आइए उन्हें विस्तार से देखें। मान लीजिए कि हमारे पास एक सूची है:
lst = [1, 2, 3]
आइए सूची के मौजूद न होने वाले तत्व तक पहुंचने का प्रयास करें:
print(lts[4])
कोड निष्पादित होने के बाद एक त्रुटि (एक्सेप्शन) दिखाई देगी:
IndexError: list index out of range
हालाँकि, यदि हमें एक्सेप्शन दिखाए बिना कार्य
जारी रखना है, तो इसे try-except कंस्ट्रक्शन
का उपयोग करके पकड़ना चाहिए। इसका
सिंटैक्स निम्नलिखित है:
try:
# वह कोड जो एक्सेप्शन उत्पन्न कर सकता है
except:
# त्रुटि का हैंडलिंग
try ब्लॉक में वह कोड रखना चाहिए
जिसमें एक्सेप्शन हो सकता है। यदि
इस कोड को निष्पादित करते समय कोई
एक्सेप्शनल स्थिति उत्पन्न होती है, तो
कोड का निष्पादन रुकेगा नहीं, बल्कि except
ब्लॉक के कोड में चला जाएगा। इस ब्लॉक में
एक ऐसा संदेश प्रिंट करना चाहिए जो उत्पन्न हुई
त्रुटि के सार का यथासंभव सटीक वर्णन करे।
यदि try ब्लॉक के निष्पादन के दौरान
कोई एक्सेप्शनल स्थिति नहीं हुई,
तो उपयोगी कोड बस निष्पादित हो जाएगा, और
except ब्लॉक का कोड - नहीं।
आइए सूची के मौजूद न होने वाले तत्व तक पहुंचने पर होने वाले
एक्सेप्शन को पकड़ें। इसके लिए
try ब्लॉक में संभावित त्रुटि वाला कोड
रखेंगे। और except ब्लॉक में
कंसोल पर 'error: elem is not exist'
संदेश प्रिंट करने का निर्देश देंगे:
lst = [1, 2, 3]
try:
print(lst[4])
except:
print('error: elem is not exist')
कोड निष्पादित होने के बाद प्रिंट होगा:
'error: elem is not exist'
try-except कंस्ट्रक्शन सीखने के बाद
आपके द्वारा लिखे गए कोड की शैली बदल जानी चाहिए।
अब उन सभी स्थानों को, जहाँ एक्सेप्शनल
स्थिति उत्पन्न हो सकती है, try
में रैप करना होगा, और except ब्लॉक में
इस एक्सेप्शन पर प्रतिक्रिया लिखनी होगी।
उपयोगकर्ता से दो संख्याएँ पूछें। एक को दूसरे से विभाजित करें। शून्य से विभाजन की एक्सेप्शनल स्थिति को पकड़ें।
उपयोगकर्ता से एक संख्या पूछें। इस संख्या का वर्गमूल ज्ञात करें। ऋणात्मक संख्या से वर्गमूल निकालने की एक्सेप्शनल स्थिति को पकड़ें।
एक सूची दी गई है। उपयोगकर्ता से एक पूर्णांक पूछें। उपयोगकर्ता द्वारा दर्ज किए गए नंबर वाला सूची तत्व प्राप्त करें। उस एक्सेप्शनल स्थिति को पकड़ें, जो तब होगी यदि उपयोगकर्ता ने सूची की सीमा से बाहर की संख्या दर्ज की।
निम्नलिखित कोड दिया गया है:
num = '5'
res = num + 2
print(res)
इस कोड में क्या गलत है? इसकी कमियों को सुधारें।
निम्नलिखित कोड दिया गया है:
lst = [1, 2, 3, 4]
def getElem(iter):
print(iter[4])
getElem(lst)
इस कोड में क्या गलत है? इसकी कमियों को सुधारें।