Ek exception ek object hai jise Python raise (throw) karta hai jab kuch abnormal hota hai. Agar koi ise catch nahi karta, toh yeh call stack upar propagate hoti hai jab tak program ek traceback ke saath crash nahi kar leta.
Hamesha — chahe exception aayi ho ya nahi, catch hui ho ya nahi, ya chahe return/break/continue use kiya ho.
Bare except: ke jagah except ValueError prefer kyun karein?
Bare except bugs (NameError), Ctrl-C (KeyboardInterrupt) aur SystemExit bhi swallow kar leta hai, real problems chhupa deta hai. Jo narrowest exception handle kar sako wahi catch karo.
Agar try body mein statement Sk pe exception raise ho, toh Sk+1 ka kya hota hai?
Woh skip ho jaata hai; Python seedha matching except clause pe jump karta hai.
Kya except ParentErrorChildError (subclass) ko catch karega?
Haan — except listed class aur uski saari subclasses match karta hai. Isliye child-pehle, parent-baad mein rakho.
Taaki success-handling code mein error accidentally aapke except se catch na ho, jo ek alag bug mask kar deta.
Exception object tak kaise access karein?
except SomeError as e: se ise e se bind karo.
except (A, B): ka matlab kya hai?
Exception A ya B (types ka tuple) ko same handler se catch karo.
Recall Feynman: 12-saal ke bachhe ko explain karo
Socho tum ek recipe se khana bana rahe ho (try). Agar koi step galat ho jaye — anda gira diya — tum aankhein band karke recipe follow nahi karte. Tum "anda toot jaye toh kya karein" wale note pe jump karte ho (except). Agar khana perfectly bana, toh "ab khana plate karo" step karte ho (else). Aur chahe kuch bhi ho — jala ho ya perfect — tum hamesha end mein bartan zaroor dhoote ho (finally). except egg-brokespecific hai: woh fire nahi karta agar oven mein aag lag gayi, woh alag emergency hai.