अपवाद संचालन (Exception handling) मज़बूत पाइथन प्रोग्रामिंग का एक महत्वपूर्ण घटक है। यह आपको प्रोग्राम निष्पादन के दौरान उत्पन्न होने वाली त्रुटियों को सुचारू रूप से प्रबंधित करने की अनुमति देता है, क्रैश को रोकता है और उपयोगकर्ताओं को सूचनात्मक प्रतिक्रिया प्रदान करता है। यह ट्यूटोरियल पाइथन में अपवाद संचालन की मूलभूत अवधारणाओं में तल्लीन करता है।
विषय-सूची
1. try…except
try...except
ब्लॉक अपवाद संचालन का आधार है। वह कोड जो अपवाद उत्पन्न कर सकता है, उसे try
ब्लॉक के अंदर रखा जाता है। यदि कोई अपवाद उत्पन्न होता है, तो संबंधित except
ब्लॉक निष्पादित किया जाता है।
try:
result = 10 / 0 # यह ZeroDivisionError उत्पन्न करेगा
except ZeroDivisionError:
print("त्रुटि: शून्य से भाग!")
except TypeError:
print("त्रुटि: प्रकार का मिलान नहीं हुआ")
except Exception as e: # किसी अन्य अपवाद को पकड़ता है
print(f"एक अप्रत्याशित त्रुटि हुई: {e}")
else: # वैकल्पिक else ब्लॉक, यदि कोई अपवाद नहीं होता है तो निष्पादित होता है
print(f"परिणाम: {result}")
finally: # वैकल्पिक finally ब्लॉक, हमेशा निष्पादित होता है
print("यह हमेशा निष्पादित होता है।")
यह उदाहरण ZeroDivisionError
को संभालने का प्रदर्शन करता है। कई except
ब्लॉक विभिन्न अपवाद प्रकारों को संभाल सकते हैं। वैकल्पिक else
ब्लॉक केवल तभी निष्पादित होता है जब try
ब्लॉक में कोई अपवाद नहीं होता है। finally
ब्लॉक, जो वैकल्पिक भी है, हमेशा निष्पादित होता है, फ़ाइलों को बंद करने जैसे सफाई कार्यों के लिए आदर्श है।
2. raise Exception
raise
कथन आपको स्पष्ट रूप से अपवाद उत्पन्न करने देता है, त्रुटियों या असाधारण स्थितियों का संकेत देता है।
def validate_age(age):
if age < 0:
raise ValueError("आयु ऋणात्मक नहीं हो सकती")
elif age > 120:
raise ValueError("आयु अवास्तविक रूप से अधिक है")
return age
try:
age = validate_age(-5)
print(f"मान्य आयु: {age}")
except ValueError as e:
print(f"त्रुटि: {e}")
यहाँ, validate_age
यदि आयु अमान्य है तो ValueError
उत्पन्न करता है। आप कोई भी अंतर्निहित अपवाद उत्पन्न कर सकते हैं या कस्टम बना सकते हैं (Exception
से विरासत में मिली कक्षाएँ)।
3. try…finally
finally
ब्लॉक सुनिश्चित करता है कि इसके अंदर का कोड अपवादों की परवाह किए बिना हमेशा निष्पादित होता है। यह सफाई के लिए आवश्यक है।
file = None
try:
file = open("my_file.txt", "r")
content = file.read()
print(content)
except FileNotFoundError:
print("फ़ाइल नहीं मिली!")
finally:
if file:
file.close()
print("फ़ाइल बंद हो गई।")
यह गारंटी देता है कि FileNotFoundError
उत्पन्न होने पर भी फ़ाइल बंद हो जाती है, जिससे संसाधन रिसाव को रोका जा सकता है।
4. सामान्य अंतर्निहित अपवाद
पाइथन कई अंतर्निहित अपवाद प्रदान करता है:
ZeroDivisionError
: शून्य से भाग।TypeError
: किसी ऑपरेशन के लिए अनुपयुक्त प्रकार।ValueError
: सही प्रकार, अनुपयुक्त मान।FileNotFoundError
: फ़ाइल नहीं मिली।IndexError
: सीमा से बाहर सूचकांक।KeyError
: किसी शब्दकोश में कुंजी नहीं मिली।ImportError
: आयात विफलता।NameError
: नाम नहीं मिला।
5. कस्टम अपवाद बनाना
अधिक विशिष्ट त्रुटि संचालन के लिए, Exception
कक्षा का उपवर्ग बनाकर कस्टम अपवाद बनाएँ:
class InvalidInputError(Exception):
pass
def process_data(data):
if not data:
raise InvalidInputError("डेटा खाली नहीं हो सकता")
# ...डेटा प्रोसेसिंग का बाकी हिस्सा...
try:
process_data("")
except InvalidInputError as e:
print(f"कस्टम त्रुटि: {e}")
यह अधिक सूक्ष्म त्रुटि संचालन और बेहतर कोड पठनीयता की अनुमति देता है।
प्रभावी अपवाद संचालन मज़बूत और विश्वसनीय पाइथन प्रोग्राम लिखने के लिए महत्वपूर्ण है। संभावित त्रुटियों का अनुमान लगाकर और सुचारू रूप से संभालकर, आप अधिक लचीले और उपयोगकर्ता के अनुकूल अनुप्रयोग बनाते हैं।