„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > So implementieren Sie benutzerdefinierte Ausnahmebehandlung mit Python -Protokollierungsmodul?

So implementieren Sie benutzerdefinierte Ausnahmebehandlung mit Python -Protokollierungsmodul?

Veröffentlicht am 2025-02-04
Durchsuche:159

How to Implement Custom Exception Handling with Python\'s Logging Module?

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.
  • ignoriert KeyboarTinrupt (Strg C), um der Anwendung die anmutige Beenden zu erlauben. ] Fügen Sie den benutzerdefinierten Ausnahmebehandler der Funktion sys.excepthook hinzu.
  • Erhöht einen Laufzeitfehler, um die benutzerdefinierte Fehlerbehandlung zu demonstrieren. Interveniert und protokolliert die Ausnahmedetails im konfigurierten Handler. In diesem Fall wird der Standard -Stream -Handler verwendet, um die Ausnahmeinformationen an stdout auszugeben.
  • zusätzliche Funktionen
  • Das Beispiel enthält auch einige optionale Funktionen:

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.

Freigabeerklärung Dieser Artikel wird in: 1729608201 reproduziert. Wenn Verstöße vorliegen, wenden Sie sich bitte an [email protected], um zu löschen, um zu löschen
Neuestes Tutorial Mehr>

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