Pengendalian Ralat Tersuai dengan Modul Pengelogan Python
Memastikan pengecualian yang tidak ditangkap dikendalikan dan dilog dengan betul boleh menjadi penting untuk menyelesaikan masalah dan mengekalkan kestabilan aplikasi Python. Walaupun menangkap dan mengelog pengecualian secara manual adalah pendekatan yang berdaya maju, ia boleh membosankan dan terdedah kepada ralat.
Untuk menangani isu ini, Python membenarkan anda mengatasi mekanisme pengendalian pengecualian lalai dan mengalihkan pengecualian yang tidak ditangkap ke modul pengelogan. Ini menyediakan cara yang mudah dan sistematik untuk menangkap dan mencatat maklumat pengecualian terperinci.
Penyelesaian
Masalah yang dikemukakan boleh diselesaikan dengan mengubah suai fungsi sys.excepthook global. Dengan mentakrifkan pengendali pengecualian tersuai, anda boleh memintas semua pengecualian yang tidak ditangkap dan mengendalikannya seperti yang dikehendaki. Berikut ialah contoh yang lengkap dan kukuh:
<code class="python">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")</code>
Penjelasan
Kod ini:
Apabila pengecualian yang tidak ditangkap dinaikkan, tersuai pengendali pengecualian campur tangan dan log butiran pengecualian kepada pengendali yang dikonfigurasikan. Dalam kes ini, pengendali strim lalai digunakan untuk mengeluarkan maklumat pengecualian kepada stdout.
Ciri Tambahan
Contohnya juga termasuk beberapa ciri pilihan:
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Pengendalian Pengecualian Tersuai dengan Modul Pengelogan Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!