捕获全局异常,并且把异常信息打印到日志中
背景:工作中用到一些脚本,脚本把日志记录到文件中。新需求修改脚本后,难免引入一些异常,执行脚本会报错,但是日志文件中没有报错的详细信息,很难排查。
1、不使用sys.excepthook时,执行下面代码会抛出异常,日志文件example.log不会记录异常信息。
#coding:utf-8 import sys import logging logging.basicConfig(filename='example.log', encoding='utf-8', level=logging.DEBUG) def handle_exception(exc_type, exc_value, exc_traceback): """使用sys.excepthook捕获全局异常,并且把异常信息打印到日志中""" if issubclass(exc_type, KeyboardInterrupt): sys.__excepthook__(exc_type, exc_value, exc_traceback) return logging.error("未捕获的异常:", exc_info=(exc_type, exc_value, exc_traceback)) #sys.excepthook = handle_exception # 全局捕获异常 a=3/0
2、使用sys.excepthook后,无论脚本哪一行代码抛出异常,日志文件example.log都会记录异常信息。
#coding:utf-8 import sys import logging logging.basicConfig(filename='example.log', encoding='utf-8', level=logging.DEBUG) def handle_exception(exc_type, exc_value, exc_traceback): """使用sys.excepthook捕获全局异常,并且把异常信息打印到日志中""" if issubclass(exc_type, KeyboardInterrupt): sys.__excepthook__(exc_type, exc_value, exc_traceback) return logging.error("未捕获的异常:", exc_info=(exc_type, exc_value, exc_traceback)) sys.excepthook = handle_exception # 全局捕获异常 a=3/0
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
2017-02-27 appium 移动web样例脚本