Home › Hindi › Exception handling Hindi
Python exception handling Hindi में — try, except, else, finally
🌐 यह page Hindi में है · Read this in English →
try / except / else / finallyसही क्रम का ruleFree browser practice
Exception handling की ज़रूरत क्यों
कुछ galtiyan आपके code की नहीं होतीं — user गलत input दे देता है, file गायब होती है, internet टूट जाता है। इन्हें पहले से रोका नहीं जा सकता, सिर्फ सँभाला जा सकता है। यही exception handling है।
# बिना handling — पूरा program मर जाता है
num = int(input("Number: ")) # user ने लिखा "abc"
print("Yahan tak pahunchega hi nahi")
# handling के साथ — program ज़िंदा रहता है
try:
num = int(input("Number: "))
print("Aapka number:", num)
except ValueError:
print("Sirf number likho")
print("Program chalta raha") # ✅ यह हमेशा छपेगा
try, except, else, finally — चारों का काम
try:
# वह code जो टूट सकता है
marks = int(input("Marks: "))
percent = marks / 100
except ValueError:
# सिर्फ तब चलेगा जब ValueError आए
print("Galat input")
else:
# सिर्फ तब चलेगा जब try में कोई error आया ही नहीं
print("Percent:", percent)
finally:
# हर हाल में चलेगा — error आए या न आए
print("Jaanch poori hui")
दो नियम जो लोग भूल जाते हैं:
elseतब चलता है जब error नहीं आया। यह loop वाले else से अलग सोच है, पर logic मिलता-जुलता है।finallyहमेशा चलता है —returnके बाद भी। file बंद करने या connection छोड़ने का सही जगह यही है।
except का क्रम — छोटे पहले, बड़े बाद में
# ❌ गलत क्रम — ValueError वाला block कभी नहीं चलेगा
try:
num = int(input())
except Exception:
print("Kuch galat hua")
except ValueError: # यहाँ तक control पहुँचता ही नहीं
print("Number likho")
# ✅ सही क्रम — specific पहले, general बाद में
try:
num = int(input())
result = 100 / num
except ValueError:
print("Number likho")
except ZeroDivisionError:
print("Zero se bhag nahi sakte")
except Exception as e:
print("Anjaan galti:", e)
Python ऊपर से नीचे पहला मेल खाता except चुनता है। Exception सबका बाप है, इसलिए वह सबसे नीचे जाना चाहिए। एक ही काम दो errors पर करना हो तो tuple लिखो: except (ValueError, TypeError):
except: अकेला मत लिखो
# ❌ सबसे खतरनाक line
try:
kaam()
except:
pass
यह हर error चुपचाप निगल जाता है — typo, memory error, यहाँ तक कि Ctrl+C भी। आपका bug छिप जाता है और घंटों पता नहीं चलता।
# ✅ कम से कम इतना करो
try:
kaam()
except Exception as e:
print("Error:", type(e).__name__, "-", e)
type(e).__name__ error का नाम देता है (ValueError) और e उसका message। Debugging में यही दो चीज़ें सबसे ज़्यादा काम आती हैं।
raise — खुद error उठाना
जब input तकनीकी रूप से ठीक है पर आपके rules के हिसाब से गलत है, तब raise करो:
def set_umar(umar):
if umar < 0:
raise ValueError("Umar negative nahi ho sakti")
return umar
try:
set_umar(-5)
except ValueError as e:
print("Pakda gaya:", e) # Pakda gaya: Umar negative nahi ho sakti
अपना खुद का exception बनाना हो तो Exception से class बना लो:
class MarksError(Exception):
pass
def check(m):
if m > 100:
raise MarksError(f"{m} marks possible nahi hain")
try:
check(120)
except MarksError as e:
print(e)
4 galtiyan जो सबसे ज़्यादा होती हैं
- पूरा program try में डाल देना: सिर्फ वही lines try में रखो जो सच में टूट सकती हैं, वरना असली galti कहाँ हुई पता नहीं चलता।
exceptमें सिर्फpassलिखना: error छिप गया पर गया नहीं — बाद में और अजीब bug बनकर लौटेगा।- Error class के बजाय message पकड़ने की कोशिश: हमेशा class से पकड़ो (
except KeyError:), string मिलाकर नहीं। - जहाँ
ifकाफी है वहाँ try लगाना:if num != 0:लिखनाtry/except ZeroDivisionErrorसे साफ और तेज़ है। Exception असली "अनपेक्षित" हालात के लिए है।
याद रखने लायक एक बात: अच्छा exception handling का मतलब "error छिपाना" नहीं, "error का साफ जवाब देना" है।
🛠️ Practice करो (free, browser में)
पढ़ना काफी नहीं — यही bug खुद fix करके देखो। नीचे के problems browser में ही चलते हैं, कोई install नहीं, कोई login नहीं।
- try-except-else का flow — else कब चलता है
- int() पर ValueError — try/except का असली use
अक्सर पूछे जाने वाले सवाल
try-except में else का क्या काम है?
else वाला block तब चलता है जब try में कोई भी exception नहीं आया। इससे "जो टूट सकता है" और "सब ठीक रहने पर जो करना है" — दोनों अलग-अलग साफ दिखते हैं।
finally block कब चलता है?
हर हाल में — error आए या न आए, और try के अंदर return लिखा हो तब भी। इसीलिए file बंद करने या connection छोड़ने जैसा cleanup का काम finally में रखा जाता है।
except: अकेला लिखना गलत क्यों है?
क्योंकि वह हर तरह की error चुपचाप पकड़ लेता है, जिसमें आपके अपने typo और Ctrl+C भी शामिल हैं। कम से कम except Exception as e: लिखो ताकि पता चले कि असल में हुआ क्या।
exception handling और if condition में से क्या चुनें?
जो हालात आप पहले से जाँच सकते हो (जैसे zero से भाग) उसके लिए if बेहतर है। Exception उन हालात के लिए है जो आपके बस में नहीं — गलत user input, गायब file, टूटा network।