基于python traceback实现异常的获取与处理


Posted in Python onDecember 13, 2019

这篇文章主要介绍了基于python traceback实现异常的获取与处理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

1、traceback.print_exc()

2、traceback.format_exc()

3、traceback.print_exception()

简单说下这三个方法是做什么用的:

1、print_exc():是对异常栈输出

2、format_exc():是把异常栈以字符串的形式返回,print(traceback.format_exc()) 就相当于traceback.print_exc()

3、print_exception():traceback.print_exc()实现方式就是traceback.print_exception(sys.exc_info()),可以点sys.exc_info()进

去看看实现

测试代码如下:

def func(a, b):
  return a / b


if __name__ == '__main__':
  import sys
  import time
  import traceback

  try:
    func(1, 0)
  except Exception as e:
    print('***', type(e), e, '***')
    time.sleep(2)

    print("***traceback.print_exc():*** ")
    time.sleep(1)
    traceback.print_exc()
    time.sleep(2)

    print("***traceback.format_exc():*** ")
    time.sleep(1)
    print(traceback.format_exc())
    time.sleep(2)

    print("***traceback.print_exception():*** ")
    time.sleep(1)
    traceback.print_exception(*sys.exc_info())

运行结果:

*** <class 'ZeroDivisionError'> division by zero ***


***traceback.print_exc():*** 
Traceback (most recent call last):
 File "E:/HttpRunnerManager-jh/ApiManager/tests.py", line 42, in <module>
  func(1, 0)
 File "E:/HttpRunnerManager-jh/ApiManager/tests.py", line 33, in func
  return a / b
ZeroDivisionError: division by zero


***traceback.format_exc():*** 
Traceback (most recent call last):
 File "E:/HttpRunnerManager-jh/ApiManager/tests.py", line 42, in <module>
  func(1, 0)
 File "E:/HttpRunnerManager-jh/ApiManager/tests.py", line 33, in func
  return a / b
ZeroDivisionError: division by zero


***traceback.print_exception():*** 
Traceback (most recent call last):
 File "E:/HttpRunnerManager-jh/ApiManager/tests.py", line 42, in <module>
  func(1, 0)
 File "E:/HttpRunnerManager-jh/ApiManager/tests.py", line 33, in func
  return a / b
ZeroDivisionError: division by zero

可以看出,三种方式打印结果是一样的。在开发时,做调试是很方便的。也可以把这种异常栈写入日志。

logging.exception(ex)

# 指名输出栈踪迹, logging.exception的内部也是包了一层此做法
logging.error(ex, exc_info=1) 

# 更加严重的错误级别 
logging.critical(ex, exc_info=1) 

# 我直接copy的,未尝试。有时间会试下的

python 还有一个模块叫cgitb,输出的error非常详情。

try:
    func(1, 0)
  except Exception as e:
    import cgitb
    cgitb.enable(format='text')
    func(1, 0)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现支持目录FTP上传下载文件的方法
Jun 03 Python
python基于twisted框架编写简单聊天室
Jan 02 Python
python opencv 图像尺寸变换方法
Apr 02 Python
python3 pandas 读取MySQL数据和插入的实例
Apr 20 Python
Python查看微信撤回消息代码
Jun 07 Python
Python 查找list中的某个元素的所有的下标方法
Jun 27 Python
Python单元测试简单示例
Jul 03 Python
Python网络爬虫之爬取微博热搜
Apr 18 Python
Pyecharts地图显示不完成问题解决方案
May 11 Python
解决keras GAN训练是loss不发生变化,accuracy一直为0.5的问题
Jul 02 Python
如何利用Matlab制作一款真正的拼图小游戏
May 11 Python
4种方法python批量修改替换列表中元素
Apr 07 Python
python 实现批量替换文本中的某部分内容
Dec 13 #Python
django多种支付、并发订单处理实例代码
Dec 13 #Python
Python+OpenCV+图片旋转并用原底色填充新四角的例子
Dec 12 #Python
Python+OpenCV 实现图片无损旋转90°且无黑边
Dec 12 #Python
使用python去除图片白色像素的实例
Dec 12 #Python
用Python去除图像的黑色或白色背景实例
Dec 12 #Python
python 实现将小图片放到另一个较大的白色或黑色背景图片中
Dec 12 #Python
You might like
php注入实例
2006/10/09 PHP
PHP中的cookie
2006/11/26 PHP
Php Ctemplate引擎开发相关内容
2012/03/03 PHP
php解析json数据实例
2014/08/19 PHP
CSS+Table图文混排中实现文本自适应图片宽度(超简单+跨所有浏览器)
2009/02/14 Javascript
childNodes.length与children.length的区别
2009/05/14 Javascript
js substr、substring和slice使用说明小记
2011/09/15 Javascript
jQuery获取cookie值及删除cookie用法实例
2016/04/15 Javascript
js实现可控制左右方向的无缝滚动效果
2016/05/29 Javascript
基于Bootstrap+jQuery.validate实现表单验证
2016/05/30 Javascript
vue.js根据代码运行环境选择baseurl的方法
2018/02/28 Javascript
如何实现小程序tab栏下划线动画效果
2019/05/18 Javascript
JS实现的定时器展示简单秒表、页面弹框及跳转操作完整示例
2020/01/26 Javascript
Vue 如何使用props、emit实现自定义双向绑定的实现
2020/06/05 Javascript
vue使用video插件vue-video-player的示例
2020/10/03 Javascript
vue登录页实现使用cookie记住7天密码功能的方法
2021/02/18 Vue.js
基于vue的video播放器的实现示例
2021/02/19 Vue.js
[02:55]含熏伴清风,风行者至宝、屠夫身心及典藏宝瓶二展示
2020/09/08 DOTA
Python实现的绘制三维双螺旋线图形功能示例
2018/06/23 Python
Django开发的简易留言板案例详解
2018/12/04 Python
Django forms表单 select下拉框的传值实例
2019/07/19 Python
django Admin文档生成器使用详解
2019/07/22 Python
python实现美团订单推送到测试环境,提供便利操作示例
2019/08/09 Python
Python OpenCV实现鼠标画框效果
2020/08/19 Python
python 实现读取csv数据,分类求和 再写进 csv
2020/05/18 Python
CSS3 渐变(Gradients)之CSS3 线性渐变
2016/07/08 HTML / CSS
html table呈现个人简历以及单元格宽度失效的问题解决
2021/01/22 HTML / CSS
用你熟悉的语言写一个连接ORACLE数据库的程序,能够完成修改和查询工作
2012/06/11 面试题
如何在Shell脚本中使用函数
2015/09/06 面试题
知识竞赛拉拉队口号
2014/06/16 职场文书
传承焦裕禄精神思想汇报2014
2014/09/10 职场文书
2014年维修电工工作总结
2014/11/20 职场文书
2015年青年教师工作总结
2015/05/25 职场文书
初中英语教学随笔
2015/08/15 职场文书
纪律委员竞选稿
2015/11/19 职场文书
基于nginx实现上游服务器动态自动上下线无需reload的实现方法
2021/03/31 Servers