引言:
最近在做UI自动化,一直傻傻分不清到底应该用error记录日志还是exception来记录,查了很多资料后,现在终于清楚了,为避免后期又遗忘,写个小文记录一下,也算总结一下下。
一、共同点:
1. logging模块有6个级别,由低到高为NOTSET>>DEBUG>>INFO>>WARNING>>ERROR>>CRITICAL,其实无论是error还是exception,它们的错误等级都是ERROR级别,看下面的事例:
通过终端,我们可以看到日志信息中,错误级别都是ERROR
二、异同点:
1. error级别的只输出错误的异常信息,而没有具体的错误堆栈信息,如果想要排查具体异常仅通过上面的异常message内容是远远不够的
2. exception级别的则不但会输出错误的异常信息,还会显示具体的错误堆栈信息,使得我们在排查问题的时候有更加明确的方向
请看下面的事例:
通过终端,我们可以看到exception比error多输出了错误堆栈信息,这样我们可以更快地通过这些信息去定位错误并解决
三、两者关系
那么error是否可以跟exception一样也输入具体的错误堆栈信息呢?当然可以
我们只需要在error处指定一个参数的值,这个参数就是exc_info=True即可,如下:
现在发现了吗?它们输出的结果是一样的,其实我们通过源码也可以看出来,它们之间的关系:
好啦,其实这两种都可以用,看个人喜好。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构