que el manejo de errores personalizados con el módulo de registro de Python
asegurando que las excepciones no capturadas se manejen y registren correctamente Una aplicación de Python. Si bien atrapar y registrar las excepciones manualmente es un enfoque viable, puede ser tedioso y propenso a errores.
para abordar este problema, Python le permite anular el mecanismo de manejo de excepción predeterminado y redirigir las excepciones no capturas al módulo de registro. Esto proporciona una forma conveniente y sistemática de capturar y registrar información de excepción detallada.
solución
El problema presentado puede resolverse modificando la función global sys.excepthook. Al definir un controlador de excepciones personalizado, puede interceptar todas las excepciones no capturas y manejarlas según lo desee. Aquí hay un ejemplo completo y robusto:
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")
explicación
este código:
Cuando se plantea una excepción no captura, el controlador de excepción personalizado interviene y registra los detalles de la excepción al controlador configurado. En este caso, el controlador de transmisión predeterminado se usa para emitir la información de excepción a stdout.
características adicionales
El ejemplo también incluye algunas características opcionales:
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3