] एक पायथन आवेदन। मैन्युअल रूप से पकड़ने और अपवादों को लॉग करना एक व्यवहार्य दृष्टिकोण है, यह थकाऊ और त्रुटि-प्रवण हो सकता है। यह विस्तृत अपवाद जानकारी को कैप्चर करने और लॉग करने के लिए एक सुविधाजनक और व्यवस्थित तरीका प्रदान करता है। एक कस्टम अपवाद हैंडलर को परिभाषित करके, आप सभी अपवादों को बाधित कर सकते हैं और उन्हें वांछित के रूप में संभाल सकते हैं। यहाँ एक पूर्ण और मजबूत उदाहरण है:
आयात sys आयात लॉगिंग लकड़हारा = लॉगिंग.गेटलॉगर (__ name__) हैंडलर = लॉगिंग.स्ट्रीमहैंडलर (स्ट्रीम = sys.stdout) logger.addhandler (हैंडलर) DEF हैंडल_सिएशन (EXC_TYPE, EXC_VALUE, EXC_TRACEBACK): # Keyboardinterptrupt को अनदेखा करें ताकि एप्लिकेशन Ctrl C के साथ बाहर निकल सके यदि ISSUBCLASS (EXC_TYPE, KEYBORDINTERRUPT): sys .__ Excepthook __ (exc_type, exc_value, exc_traceback) वापस करना # अनचाहे अपवाद को लॉग इन करें logger.error ("अनचाहे अपवाद", exc_info = (exc_type, exc_value, exc_traceback))) sys.excepthook = handel_exception # उदाहरण कोड कस्टम अपवाद हैंडलिंग का परीक्षण करने के लिए यदि __name__ == "__main__": RuntimeError ("टेस्ट अनडंडेड")
स्पष्टीकरण
यह कोड:
जब एक अनियोजित अपवाद होता है।
एप्लिकेशन को इनायत से बाहर निकलने की अनुमति देने के लिए keyboardInterrupt (ctrl c) को अनदेखा करता है। ] Sys.excepthook फ़ंक्शन के लिए कस्टम अपवाद हैंडलर को संलग्न करता है।
import sys
import logging
logger = logging.getLogger(__name__)
handler = logging.StreamHandler(stream=sys.stdout)
logger.addHandler(handler)
def handle_exception(exc_type, exc_value, exc_traceback):
# Ignore KeyboardInterrupt so the application can exit with Ctrl C
if issubclass(exc_type, KeyboardInterrupt):
sys.__excepthook__(exc_type, exc_value, exc_traceback)
return
# Log the uncaught exception
logger.error("Uncaught exception", exc_info=(exc_type, exc_value, exc_traceback))
sys.excepthook = handle_exception
# Example code to test the custom exception handling
if __name__ == "__main__":
raise RuntimeError("Test unhandled")
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3