व्यवहार में, वहाँ except:
और except BaseException:
बीच कोई अंतर नहीं, किसी भी वर्तमान अजगर जारी करने के लिए है।
ऐसा इसलिए है क्योंकि आप किसी भी प्रकार की वस्तु को अपवाद के रूप में नहीं बढ़ा सकते हैं।
[...] उठाने के अपवाद वस्तु के रूप में पहली अभिव्यक्ति का मूल्यांकन करता है: raise
statement स्पष्ट रूप से कुछ और ऊपर उठाने की अनुमति नहीं देता। यह या तो उप-वर्ग या BaseException
का उदाहरण होना चाहिए।
बोल्ड जोर मेरा है। यह हमेशा मामला नहीं रहा है, हालांकि पुराने पायथन रिलीज (2.4 और इससे पहले) में आप अपवाद के रूप में तार का उपयोग कर सकते हैं।
लाभ तब होता है जब आपको पकड़े गए अपवाद तक आसानी से पहुंच मिलती है। as targetname
जोड़ने में सक्षम होने के लिए, को अपवादों की एक विशिष्ट श्रेणी को पकड़ना चाहिए, और केवल BaseException
ऐसा करने जा रहा है।
आप अभी भी हालांकि sys.exc_info()
का उपयोग करके वर्तमान में सक्रिय अपवाद पहुँच सकते हैं:
except:
be = sys.ext_info()[1]
उठाओ आप क्या महसूस अपने भविष्य स्वयं और आपके सहयोगियों के लिए और अधिक पठनीय है।
स्रोत
2017-06-20 14:31:38
जब तक आपने पहले 'बेसएक्सप्शन = वैल्यूएर'' जैसे कुछ नहीं रखा है ;-) 'को छोड़कर: 'किसी भी त्रुटि को छोड़कर हमेशा गारंटी देता है। –
@a_guest: हाँ, * नाम * अभी भी रिबाउंड हो सकता है। 'buildins.BaseException' एक अच्छा फॉलबैक है, लेकिन मूर्खतापूर्ण नहीं है। –