"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como implementar o manuseio de exceção personalizado com o módulo de log do Python?

Como implementar o manuseio de exceção personalizado com o módulo de log do Python?

Postado em 2025-02-19
Navegar:355

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

manuseio de erros personalizado com o módulo de registro de Python

garantindo que as exceções não sejadas sejam manipuladas adequadamente e o registro possa ser crucial para a solução de problemas e a manutenção da estabilidade da estabilidade da estabilidade da um aplicativo Python. Embora as exceções de captura e log manualmente sejam uma abordagem viável, ela pode ser tediosa e propensa a erros. Isso fornece uma maneira conveniente e sistemática de capturar e registrar informações detalhadas da exceção. Ao definir um manipulador de exceção personalizado, você pode interceptar todas as exceções não capturadas e lidar com elas conforme desejado. Aqui está um exemplo completo e robusto:

importar sistemas SYS importar log logger = logging.getLogger (__ name__) manipulador = logging.streamHandler (stream = sys.stdout) Logger.addhandler (manipulador) def handle_exception (exc_type, exc_value, exc_traceback): # Ignore o teclado interruptão para que o aplicativo possa sair com Ctrl C Se Issubclass (exc_type, keyboardInterrupt): sys .__ Excepthook __ (exc_type, exc_value, exc_traceback) retornar # Log the Uncathed Exception Logger.error ("Exceção não capturada", exc_info = (exc_type, exc_value, exc_traceback)) sys.ExcepThook = handle_exception # Código de exemplo para testar o manuseio de exceção personalizado Se __name__ == "__main__": REALMENTE RUNTimeError ("Teste não atendido")

explicação

este código:
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")
define um manipulador de exceção personalizado, handle_exception, que é invocado Quando ocorre uma exceção não capturada. Saia graciosamente. Para demonstrar o manuseio de erros personalizado. registra os detalhes da exceção ao manipulador configurado. Nesse caso, o manipulador de fluxo padrão é usado para produzir as informações de exceção para stdout.

filtragem:

ignore certos tipos de exceções (por exemplo, teclado interrupto) usando a subclasse checking.

    personalização:
  • modifique o manipulador de log ou use vários manipuladores para controlar o formato de saída e o destino dos logs de exceção.
Declaração de lançamento Este artigo é reproduzido em: 1729608201 Se houver violações, entre em contato com [email protected] para excluir
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3