Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich nicht abgefangene Ausnahmen in Python automatisch protokollieren?
Das Abfangen und Behandeln von Ausnahmen ist für die Fehlerbehandlung in Python von entscheidender Bedeutung. Was ist jedoch mit nicht abgefangenen Ausnahmen, die andernfalls in der Standardfehlerausgabe (stderr) ausgegeben würden?
Während es immer ratsam ist, Ausnahmen explizit abzufangen und zu behandeln, kann dies manchmal der Fall sein Praktisch, um die Protokollierung nicht erfasster Ausnahmen zu automatisieren. Anstatt sich auf einen Try/Except-Block zu verlassen, ermöglicht die folgende Lösung eine automatische Protokollierung:
<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>
Dieser Code führt mehrere Aufgaben aus:
Durch die Automatisierung der Protokollierung nicht abgefangener Ausnahmen vereinfacht dieser Ansatz die Fehlerbehandlung und bietet einen zentralen Ort zur Überprüfung aller Ausnahmen, die während der Programmausführung auftreten, unabhängig davon, ob sie abgefangen werden oder nicht .
Das obige ist der detaillierte Inhalt vonWie kann ich nicht abgefangene Ausnahmen in Python automatisch protokollieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!