पायथन में अपवादों को कैसे संभालें?

पायथन में अपवादों को कैसे संभालें?

अपवाद हैंडलिंग आपके प्रोग्राम के उन हिस्सों के लिए त्रुटि संदेशों को अनुकूलित और प्रदर्शित करने की आपकी क्षमता है जो काम करने में विफल रहते हैं।





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





यहां, हम देखेंगे कि आप पायथन में अपवादों को कैसे संभाल सकते हैं।





पायथन में एक्सेप्शन हैंडलिंग कैसे काम करती है

जब आप अपवाद उठाते हैं, तो आप पाइथन को एक संदेश लाने के लिए कह रहे हैं जब भी कोड का एक ब्लॉक विफल हो जाता है। एक्सेप्शन हैंडलिंग किसी को वजन उठाने की कोशिश करने के लिए कहने जैसा है। और अगर वे नहीं कर सकते हैं, तो उन्हें आपको बताना चाहिए।

हालाँकि, पायथन में एक अपवाद बढ़ाने के लिए, आप पायथन को कोड के एक विशेष ब्लॉक को आज़माने और चलाने के लिए कहेंगे। यदि वह ब्लॉक विफल हो जाता है, तो आप पाइथन को असफल कोड के लिए परिभाषित अपवाद बढ़ाने के लिए कह सकते हैं।



आपको पायथन प्रोग्रामिंग में अपवादों का उपयोग कब करना चाहिए?

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

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





दूसरे शब्दों में, आप अपवादों को चेतावनी उपकरण के रूप में उपयोग कर सकते हैं ताकि उपयोगकर्ताओं को आपके प्रोग्राम का उपयोग करने के तरीके के बारे में मार्गदर्शन किया जा सके।

पायथन अपवादों को संभालना

पायथन में अपवादों को संभालने के लिए, आपको सबसे पहले अपने कोड को a . में लपेटना होगा कोशिश करो...सिवाय खंड मैथा। कभी-कभी, आपको a . को शामिल करने की आवश्यकता हो सकती है आखिरकार आपकी आवश्यकताओं के आधार पर आगे की कार्रवाइयों को संभालने के लिए कथन।





पायथन अपवादों की कोडिंग अवधारणा आम तौर पर इस तरह दिखती है:

try:
'code to be executed'
except:
'error message'

जैसा कि पहले उल्लेख किया गया है, आप इसका भी उपयोग कर सकते हैं आखिरकार एक अपवाद ब्लॉक में। लेकिन जो कोड आप अंदर लिखते हैं a आखिरकार खंड स्वतंत्र है और चलता है कि कोई अपवाद है या नहीं।

संक्षेप में, यह तब काम आता है जब आपके पास कोड का एक और ब्लॉक होता है जिसे आप लगातार चलाना चाहते हैं, भले ही इसमें क्या होता है कोशिश करो...सिवाय खंड मैथा।

यहाँ एक उदाहरण है:

try:
print(9+6)
except:
print('error message')
finally:
print('please restart')
Output:
15
please restart

उपरोक्त कोड में, कृपया पुनः प्रारंभ करें लगातार चलता है, भले ही कोई अपवाद हो या न हो।

एक अन्यथा स्थिति भी अनुसरण कर सकती है a के अलावा बयान:

try:
C = 2 + B
except:
print('B needs to be defined')
else:
print(u'Added successfully! The result is %s'%(C))
Output: B needs to be defined

अब कोशिश करें कि 'बी' परिभाषित के साथ फिर से:

try:
B = 5
C = 2 + B
except:
print('B needs to be defined')
else:
print(u'Added successfully! The result is %s'%(C))
Output: Added successfully! The result is 7

उपरोक्त उदाहरण अमानकीकृत अपवाद हैं। लेकिन जब आप बिल्ट-इन (परिभाषित) अपवादों को गैर-मानकीकृत अपवादों के साथ जोड़ते हैं, तो आपके पास अधिक स्पष्ट अपवाद हो सकते हैं:

try:
C = 2 + B
except NameError as err:
print(err, ':', 'B needs to be defined, please')
else:
print(u'Added successfully! The result is %s'%(C))
Output: name 'B' is not defined : B needs to be defined, please

उपरोक्त अपवाद पहले जाँचता है कि क्या वहाँ a . है नाम त्रुटि में प्रयत्न खंड मैथा। यह तब मानक प्रिंट करता है नाम त्रुटि अपवाद पहले ('नाम 'बी' परिभाषित नहीं है')। और आपके लिखित अपवाद के साथ इसका समर्थन करता है ('बी को परिभाषित करने की आवश्यकता है, कृपया')।

संबंधित: बुनियादी प्रोग्रामिंग सिद्धांत हर प्रोग्रामर को पता होना चाहिए

Xbox नियंत्रक पीसी से कनेक्ट नहीं होगा

और अगर आप अपवादों की एक श्रृंखला को संभालना चाहते हैं, तो आप भी साथ दे सकते हैं a प्रयत्न कई के साथ ब्लॉक करें के अलावा बयान। यह बहुत आसान है अगर आपका प्रयत्न ब्लॉक में कई अपवाद होने की संभावना है:

try:
B = 5
C = 2 + B
D = float(6)
F = 7/0
except NameError as err:
print(err,':', 'B needs to be defined, please')
except ValueError as val:
print(val,':', 'You can't convert that data')
except ZeroDivisionError as zeroerr:
print(zeroerr,':', 'You can't divide a number by zero')
else:
print(u'Operation successfull! The results are: %s, %s, and %s'%(C, D, F))
Output: division by zero : You can't divide a number by zero

क्या होगा यदि विभाजन वैध है? उदाहरण के लिए, प्रतिस्थापित करना एफ = 7/0 उपरोक्त कोड में एफ = 7/5 देता है:

Output: Operation successfull! The results are: 7, 6.0, and 1.4

पायथन में उपयोगकर्ता-परिभाषित अपवाद

आप अपने अपवाद के साथ भी आ सकते हैं और बाद में उन्हें अपने कार्यक्रम में बुला सकते हैं। इससे आप अपने अपवाद का विशिष्ट विवरण दे सकते हैं और इसे अपनी पसंद के अनुसार नाम दे सकते हैं।

फिर भी, प्रत्येक उपयोगकर्ता-परिभाषित अपवाद (प्रत्यक्ष या अप्रत्यक्ष रूप से) अभी भी बिल्ट-इन . से आता है अपवाद पायथन की कक्षा।

नीचे दिया गया उदाहरण कोड आधार का संदर्भ देता है अपवाद सीधे कॉल करके रनटाइम त्रुटि यह से:

class connectionError(RuntimeError):
def __init__(self, value):
self.value = value
try:
raise connectionError('Bad hostname')
except connectionError as err:
print(err.value)
Output: Bad hostname

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

सम्बंधित: पायथन के साथ नियमित अभिव्यक्तियों के लिए शुरुआती मार्गदर्शिका

आप इसे सीधे से प्राप्त करके उपयोगकर्ता द्वारा परिभाषित अपवाद बना सकते हैं अपवाद आधार वर्ग। नीचे दिया गया अपवाद, हालांकि, 6 से 5 के घटाव को रोकता है और सीधे बेस क्लास से अपवाद को कॉल करता है:

class errors(Exception):
pass
class sixFiveError(errors):
def __init__(self, value, message):
self.value = value
self.message = message
try:
raise sixFiveError(6-5,'This substraction is not allowed')
except sixFiveError as e:
print('There was an error:', e.message)
Output: There was an error: This substraction is not allowed

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

# First call the base exception classes:
class errors(Exception):
pass
# Next, derive your own exception from the base class:
class FloatError(errors):
def __init__(self, value, message):
self.value = value
self.message = message
# Create a function to add two floats:
def addTwoFloat(a, b):
if (type(a) and type(b)) != float:
raise FloatError(a+b,'Numbers must be float to add')
else:
print(a + b)
addTwoFloat(4, 7)
Output: __main__.FloatError: (11, 'Numbers must be float to add')

क्योंकि आपने अब परिभाषित किया है a फ्लोट त्रुटि वर्ग, यदि आप दो गैर-फ्लोट शाब्दिकों का उपयोग करके जोड़ने का प्रयास करते हैं, तो पायथन इसे बढ़ाता है AddtwoFloat समारोह।

आप प्रिंट कर सकते हैं फ्लोट त्रुटि क्लास उसी पायथन फ़ाइल में जहाँ आपने इसे बनाया है यह देखने के लिए कि क्या होता है:

print(FloatError)
Output:

फ्लोट त्रुटि , हालांकि, एक अंतर्निहित पायथन अपवाद नहीं है। आप इसे कॉल करके सत्यापित कर सकते हैं फ्लोट त्रुटि एक और ताज़ा पायथन फ़ाइल में जहाँ आपने यह वर्ग नहीं बनाया है:

print(FloatError)
Output: NameError: name 'FloatError' is not defined

आपको एक मिलता है नाम त्रुटि क्योंकि पायथन इसे मानक अपवाद के रूप में नहीं पहचानता है।

आप अन्य त्रुटि वर्गों को स्वयं परिभाषित करने का प्रयास कर सकते हैं यह देखने के लिए कि वे कैसे खेलते हैं।

अपवादों के साथ अपने पायथन प्रोग्राम को अधिक उपयोगकर्ता के अनुकूल बनाएं

पायथन में कई मानक अपवाद हैं। लेकिन आप अपना भी परिभाषित कर सकते हैं। फिर भी, आपके प्रोग्राम का उपयोग करने में आसानी कुछ हद तक इस बात पर निर्भर करती है कि यह विभिन्न अपवादों (चाहे उपयोगकर्ता-परिभाषित, गैर-विशिष्ट, या मानक) को कैसे संभालता है।

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

साझा करना साझा करना कलरव ईमेल अपने पायथन कोड को कैसे डिबग करें

अपने आप को अपने रास्ते में आने वाले हर पायथन बग को खत्म करने की जानकारी से लैस करें।

आगे पढ़िए
संबंधित विषय
  • प्रोग्रामिंग
  • अजगर
  • कोडिंग ट्यूटोरियल
लेखक के बारे में इडिसौ ओमिसोला(94 लेख प्रकाशित)

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

Idowu Omisola . की और फ़िल्में या टीवी शो

हमारे न्यूज़लेटर की सदस्यता लें

तकनीकी युक्तियों, समीक्षाओं, निःशुल्क ई-पुस्तकों और अनन्य सौदों के लिए हमारे न्यूज़लेटर से जुड़ें!

सब्सक्राइब करने के लिए यहां क्लिक करें