如何在 Python 中记录未捕获的异常?
在 Python 中记录未捕获的异常
当 Python 程序中发生异常且未在当前执行块内处理时,会自动打印到标准错误(stderr)。这种行为可能很不方便,特别是当您想要捕获所有异常以进行日志记录或调试目的时。
要解决此问题,您可以配置日志记录模块以自动输出未捕获的异常。这是一个利用logging.exception()函数的解决方案:
<code class="python">try: raise Exception('Throwing a boring exception') except Exception as e: logging.exception(e)</code>
登录后复制
这种方法很有效,但需要显式处理和记录每个异常。对于更自动化的解决方案,您可以重写 Python 的 sys.excepthook 函数,该函数负责处理未捕获的异常。
下面是完整日志记录配置的示例,其中包括其他功能,例如:
- 忽略键盘中断 (Ctrl C) 事件以允许程序正常退出
- 利用日志记录模块的格式化功能进行异常报告
- 将未处理的异常输出到 stdout 而不是 stderr
<code class="python">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): if issubclass(exc_type, KeyboardInterrupt): sys.__excepthook__(exc_type, exc_value, exc_traceback) return logger.error("Uncaught exception", exc_info=(exc_type, exc_value, exc_traceback)) sys.excepthook = handle_exception if __name__ == "__main__": raise RuntimeError("Test unhandled")</code>
登录后复制
完成此配置后,日志模块将自动记录所有未捕获的异常。
以上是如何在 Python 中记录未捕获的异常?的详细内容。更多信息请关注PHP中文网其他相关文章!
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前
By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
击败分裂小说需要多长时间?
3 周前
By DDD
R.E.P.O.保存文件位置:在哪里以及如何保护它?
3 周前
By DDD

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)