Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Log Pengecualian Tidak Ditangkap Secara Automatik dalam Python?
Menangkap dan mengendalikan pengecualian adalah penting untuk pengendalian ralat dalam Python. Walau bagaimanapun, bagaimana pula dengan pengecualian yang tidak ditangkap yang sebaliknya akan dicetak ke output ralat standard (stderr)?
Walaupun sentiasa dinasihatkan untuk menangkap dan mengendalikan pengecualian secara eksplisit, kadangkala ia boleh mudah untuk mengautomasikan pengelogan pengecualian yang tidak ditangkap. Daripada bergantung pada blok cuba/kecuali, penyelesaian berikut membenarkan pengelogan berlaku secara automatik:
<code class="python">import sys import logging # Create a custom exception handler def handle_exception(exc_type, exc_value, exc_traceback): if issubclass(exc_type, KeyboardInterrupt): sys.__excepthook__(exc_type, exc_value, exc_traceback) return # Use the logging module to handle the uncaught exception logger = logging.getLogger(__name__) logger.error("Uncaught exception", exc_info=(exc_type, exc_value, exc_traceback)) # Replace the default exception handler with our custom one sys.excepthook = handle_exception # Set up a logger and handler logger = logging.getLogger(__name__) handler = logging.StreamHandler(stream=sys.stdout) logger.addHandler(handler) # Raise an exception to test the custom exception handling if __name__ == "__main__": raise RuntimeError("Test unhandled")</code>
Kod ini menyelesaikan beberapa tugas:
Dengan mengautomasikan pengelogan pengecualian yang tidak ditangkap, pendekatan ini memudahkan pengendalian ralat dan menyediakan lokasi pusat untuk menyemak semua pengecualian yang berlaku semasa pelaksanaan program, sama ada ia ditangkap atau tidak .
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Log Pengecualian Tidak Ditangkap Secara Automatik dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!