benutzerdefinierte Fehlerhandhabung mit Pythons Protokollierungsmodule
, um sicherzustellen, dass die nicht erfasste Ausnahmen ordnungsgemäß behandelt werden und angemeldet werden, um die Stabilität der Stabilität der Stabilität der Stabilität der Stabilität der Stabilität von der Stabilität des Stabils der Stabilität zu erhalten. Eine Python -Anwendung. Während es ein praktikabler Ansatz ist, Ausnahmen manuell zu fangen und zu protokollieren, kann er mühsam und fehleranfällig sein. Dies bietet eine bequeme und systematische Möglichkeit, detaillierte Ausnahmeinformationen zu erfassen und zu protokollieren.
Lösung
Das dargestellte Problem kann gelöst werden, indem die globale Sys.excepthook -Funktion geändert wird. Durch die Definition eines benutzerdefinierten Ausnahmebehandlers können Sie alle ungewöhnlichen Ausnahmen abfangen und sie wie gewünscht umgehen. Hier ist ein vollständiges und robustes Beispiel:
importieren sys Protokollierung importieren logger = logging.getLogger (__ name__) Handler = Protokollierung.StreamHandler (Stream = sys.stdout) logger.addhandler (Handler) Def handle_exception (exc_type, exc_value, exc_traceBack): # Ignorieren Sie Keyboarinterrupt, damit die Anwendung mit Strg C beenden kann If isubClass (exc_type, keyboarinterrupt): sys .__ excepthook __ (exc_type, exc_value, exc_traceBack) zurückkehren # Loggen Sie die ungewöhnliche Ausnahme an Logger.Error ("Uncortn Exception", exc_info = (exc_type, exc_value, exc_traceBack))) sys.excepthook = handle_exception # Beispielcode zum Testen des benutzerdefinierten Ausnahmeber " Wenn __name__ == "__main__": RuntimeError ("Testen Sie nicht behandelt")
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")
Erklärung dieser Code:
Definiert einen benutzerdefinierten Ausnahmehandler, Handler, Handler, das aufgerufen wird, das aufgerufen wird, das aufgerufen wird, das aufgerufen wird Wenn eine ungewöhnliche Ausnahme eintritt.
filtering:
Ignorieren Sie bestimmte Arten von Ausnahmen (z. B. Keyboarderrupt), indem Sie die Unterklasse überprüfen. Handler, um das Ausgabeformat und das Ziel der Ausnahmeprotokolle zu steuern.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3