Python 输出详细的异常信息(traceback)方式


Posted in Python onApril 08, 2020

问题描述

为了程序的正常运行,进行异常处理是有必要的,甚至于有时候,我们会主动的抛出异常,然后让程序进行异常捕获,再进行进一步的处理。但是,在开发的程序相对较大的过程中,我们不能一昧的进行try....except。而是要弄清楚到底抛出的是什么异常,同时,对于某些未知的异常,我们应该清楚的定位到到底是哪一行程序抛出的异常,针对这种情况,traceback库能极大的帮助我们。

解决方法

代码只需一行,即 print(traceback.format_exc()) 即可,这样即可打印详细的信息,这个详细信息比你捕捉完异常打印args详细多了,详细到具体第几行,如果你在一个大型程序里,需要定位错误,那么,traceback是十分好用的:

Python 输出详细的异常信息(traceback)方式

可以清楚的看到 ‘=' 号上方和下方打印的异常详细程度是不同的。

我们还可以通过traceback,获得异常的名称,用于根据异常名称进行异常捕获,例如,我们直接运行一段程序,并没有打印出来异常的名字,这样我们无法通过异常名对异常进行捕获,因此,我们可以通过traceback获得异常名:

Python 输出详细的异常信息(traceback)方式

如上图,我们无法获得异常名,下图展示traceback获得异常名:

Python 输出详细的异常信息(traceback)方式

从上图我们可以看到,我们无法通过args获取异常名,但是可以通过traceback获取

补充知识:python 输出完成异常信息

如下所示:

import traceback
 
try:
  1/0
exception:
  traceback.print_exc()

traceback.print_exc() 直接打印异常

traceback.format_exc()返回字符串

print_exc() 还可以接受file参数直接写入到一个文件

还可以将信息写入到文件

traceback.print_exc(file=open(‘error.txt','a+'))

以上这篇Python 输出详细的异常信息(traceback)方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python多线程学习资料
Dec 19 Python
python BeautifulSoup使用方法详解
Nov 21 Python
简单说明Python中的装饰器的用法
Apr 24 Python
python基于urllib实现按照百度音乐分类下载mp3的方法
May 25 Python
Python模拟百度登录实例详解
Jan 20 Python
python 杀死自身进程的实现方法
Jul 01 Python
Python内置方法实现字符串的秘钥加解密(推荐)
Dec 09 Python
Python 中如何实现参数化测试的方法示例
Dec 10 Python
pytorch 常用线性函数详解
Jan 15 Python
keras处理欠拟合和过拟合的实例讲解
May 25 Python
tensorflow实现残差网络方式(mnist数据集)
May 26 Python
python3字符串输出常见面试题总结
Dec 01 Python
python上传时包含boundary时的解决方法
Apr 08 #Python
python MultipartEncoder传输zip文件实例
Apr 07 #Python
xadmin使用formfield_for_dbfield函数过滤下拉表单实例
Apr 07 #Python
Xadmin+rules实现多选行权限方式(级联效果)
Apr 07 #Python
Django Xadmin多对多字段过滤实例
Apr 07 #Python
解决Django部署设置Debug=False时xadmin后台管理系统样式丢失
Apr 07 #Python
解决Python中报错TypeError: must be str, not bytes问题
Apr 07 #Python
You might like
PHP 类相关函数的使用详解
2013/05/10 PHP
深入PHP magic quotes的详解
2013/06/17 PHP
JavaScript中令你抓狂的魔术变量
2006/11/30 Javascript
Jquery从头学起第四讲 jquery入门教程
2010/08/01 Javascript
jquery滚动条插件jScrollPane的使用介绍
2013/11/08 Javascript
js window.open弹出新的网页窗口
2014/01/16 Javascript
Javascript异步编程模型Promise模式详细介绍
2014/05/08 Javascript
JavaScript设置表单上传时文件个数的方法
2015/08/11 Javascript
Node.js实用代码段之正确拼接Buffer
2016/03/17 Javascript
原生JS封装Ajax插件(同域、jsonp跨域)
2016/05/03 Javascript
Javascript获取随机数的实现方法
2016/06/22 Javascript
原生js实现tab选项卡切换
2020/03/23 Javascript
关于js二维数组和多维数组的定义声明(详解)
2016/10/02 Javascript
微信小程序-消息提示框实例
2016/11/24 Javascript
jQuery+C#实现参数RSA加密传输功能【附jsencrypt.js下载】
2017/06/26 jQuery
详解vue渲染从后台获取的json数据
2017/07/06 Javascript
JS库之Waypoints的用法详解
2017/09/13 Javascript
基于jQuery选择器之表单对象属性筛选选择器的实例
2017/09/19 jQuery
vue解决弹出蒙层滑动穿透问题的方法
2018/09/22 Javascript
JavaScript常用数组操作方法,包含ES6方法
2020/05/10 Javascript
layui默认选中table的CheckBox复选框方法
2019/09/19 Javascript
vue keep-alive列表页缓存 详情页返回上一页不刷新,定位到之前位置
2019/11/26 Javascript
python服务器端收发请求的实现代码
2014/09/29 Python
python实现计算资源图标crc值的方法
2014/10/05 Python
Python3中简单的文件操作及两个简单小实例分享
2017/06/18 Python
PyQt5每天必学之日历控件QCalendarWidget
2018/04/19 Python
PyQt5每天必学之像素图控件QPixmap
2018/04/19 Python
Pytorch释放显存占用方式
2020/01/13 Python
pytorch方法测试详解——归一化(BatchNorm2d)
2020/01/15 Python
python实现俄罗斯方块小游戏
2020/04/24 Python
Python常驻任务实现接收外界参数代码解析
2020/07/21 Python
C#软件工程师英语面试题
2015/06/07 面试题
放飞梦想演讲稿
2014/05/05 职场文书
党员自我评价2015
2015/03/03 职场文书
民主评议党员个人自我评价
2015/03/03 职场文书
Oracle设置DB、监听和EM开机启动的方法
2021/04/25 Oracle