Maison >développement back-end >Tutoriel Python >Comment puis-je enregistrer automatiquement les exceptions non interceptées en Python ?
La capture et la gestion des exceptions sont cruciales pour la gestion des erreurs en Python. Cependant, qu'en est-il des exceptions non interceptées qui seraient autrement imprimées dans la sortie d'erreur standard (stderr) ?
Bien qu'il soit toujours conseillé d'intercepter et de gérer les exceptions explicitement, cela peut parfois être pratique pour automatiser la journalisation des exceptions non interceptées. Au lieu de s'appuyer sur un bloc try/sauf, la solution suivante permet que la journalisation se fasse automatiquement :
<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>
Ce code accomplit plusieurs tâches :
En automatisant la journalisation des exceptions non interceptées, cette approche simplifie la gestion des erreurs et fournit un emplacement central pour examiner toutes les exceptions qui se produisent pendant l'exécution du programme, qu'elles soient interceptées ou non. .
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!