एक्सेप्शन सिर्फ वहीं पकड़ें जहां आप सच में कुछ कर सकते हैं: retry करें, कोई default रख दें, या उसे context के साथ domain error में बदल दें। बाकी हर जगह उसे ऊपर जाने दें, एक ऐसी सीमा तक जो लॉग करके response लौटाती है। bare except की जगह खास types पकड़ें, चुपचाप कभी न निगलें, और raise from इस्तेमाल करें ताकि असली वजह traceback में बची रहे।
इंटरव्यूअर यह क्यों पूछते हैं
एक्सेप्शन को संभालने का आपका तरीका इंटरव्यूअर को बताता है कि incident के दौरान आप कैसे बर्ताव करेंगे। हर जगह try except छिड़कने से ऐसे सिस्टम बनते हैं जो चुपचाप फेल होते हैं और रात के तीन बजे डीबग करना नामुमकिन होता है। वे सीमाओं, खास exception types, cause chain बचाने और अपेक्षित errors बनाम असली bugs के फर्क पर एक सोची समझी नीति सुनना चाहते हैं।
अपना जवाब कैसे स्ट्रक्चर करें
- नियम बताएं: सिर्फ वहीं पकड़ें जहां आप कुछ कर सकें।
- एक ही error boundary वाला तरीका समझाएं।
- खास types और raise from पर जोर दें।
- अपेक्षित फेल्योर को असली bugs से अलग करें।
उदाहरण जवाब
मेरा डिफॉल्ट है चीजों को ऊपर जाने देना। try except तभी जायज है जब मैं retry कर सकूं, किसी समझदार चीज पर गिर सकूं, या ऐसा context जोड़ सकूं जो caller को चाहिए। वरना मैं सिर्फ जानकारी छिपा रहा हूं। सर्विसेज में मैं इसे एक error boundary की तरह रखता हूं, आम तौर पर middleware या एक exception handler, जो request id के साथ पूरा traceback लॉग करता है और साफ response लौटाता है, और उसके नीचे का कोड पढ़ने लायक बना रहता है क्योंकि उस पर handlers की चादर नहीं पड़ी। किसी module के अंदर मैं संकरे types पकड़कर उन्हें raise from के साथ domain exception में बदलता हूं, ताकि traceback में असली वजह बनी रहे, क्योंकि वह chain खोने का नतीजा यही है कि आप ऐसे stack trace को घूरते रहें जो कहीं काम की जगह से शुरू ही नहीं होता। जिन codebases को मैं चलाता हूं वहां bare except बैन है, क्योंकि वह KeyboardInterrupt और SystemExit भी निगल जाता है। जो फर्क मुझे सबसे ज्यादा मायने रखता है वह है अपेक्षित फेल्योर बनाम bug। किसी third party API पर timeout अपेक्षित है और उसे retry मिलेगा। अपने ही dictionary पर KeyError एक bug है और उसे शोर मचाना चाहिए।
जल्दी ही यह इंटरव्यू देने जा रहे हैं? GhostPilot आपकी लाइव कॉल सुनता है, सवाल पूछे जाते ही उसे पकड़ लेता है, और रियल-टाइम में एक स्ट्रक्चर्ड जवाब आपकी स्क्रीन पर डाल देता है। अगले मॉक में इसे आजमाएं, या ले लें एक $29 Session Pass, कोई सब्सक्रिप्शन नहीं, असली इंटरव्यू के लिए।
देखें यह कैसे काम करता हैफॉलो-अप सवाल जिनकी उम्मीद रखें
- retry करने और तुरंत फेल होने में से आप कैसे चुनते हैं?
- exception group से क्या मिलता है?
- आप custom exception hierarchy कब बनाएंगे?
Python डेवलपर के और सवाल
आपका इंटरव्यूअर इसका अपना वर्ज़न पूछेगा। फ्री Question Predictor में अपना असली जॉब डिस्क्रिप्शन पेस्ट कीजिए और वो 20 सवाल पाइए जो उस रोल में सबसे ज्यादा पूछे जाने की संभावना है, साथ में यह भी कि हर सवाल असल में क्या टटोल रहा है।
मेरे सवाल प्रेडिक्ट करें