基于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写飞机大战游戏之pygame入门(4):获取鼠标的位置及运动
Nov 05 Python
Python中Django发送带图片和附件的邮件
Mar 31 Python
python的paramiko模块实现远程控制和传输示例
Oct 13 Python
深入理解Python 关于supper 的 用法和原理
Feb 28 Python
Scrapy框架爬取西刺代理网免费高匿代理的实现代码
Feb 22 Python
利用python脚本如何简化jar操作命令
Feb 24 Python
PyQt5 QTableView设置某一列不可编辑的方法
Jun 25 Python
wxpython多线程防假死与线程间传递消息实例详解
Dec 13 Python
使用python客户端访问impala的操作方式
Mar 28 Python
python百行代码自制电脑端网速悬浮窗的实现
May 12 Python
关于Theano和Tensorflow多GPU使用问题
Jun 19 Python
基于Python实现下载网易音乐代码实例
Aug 10 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
投票管理程序
2006/10/09 PHP
PHP操作mysql函数详解,mysql和php交互函数
2011/05/19 PHP
php 删除目录下N分钟前创建的所有文件的实现代码
2013/08/10 PHP
PHP使用imagick读取PDF生成png缩略图的两种方法
2014/03/20 PHP
php循环table实现一行两列显示的方法
2015/06/04 PHP
php将html转成wml的WAP标记语言实例
2015/07/08 PHP
PHP实现无限级分类(不使用递归)
2015/10/22 PHP
js实现的切换面板实例代码
2013/06/17 Javascript
jquery $(document).ready()和window.onload的区别浅析
2015/02/04 Javascript
jQuery实现平滑滚动到指定锚点的方法
2015/03/20 Javascript
JavaScript中的getMilliseconds()方法使用详解
2015/06/10 Javascript
jQuery实现带玻璃流光质感的手风琴特效
2015/11/20 Javascript
使用AngularJS 跨站请求如何解决jsonp请求问题
2017/01/16 Javascript
浅谈Angular2 ng-content 指令在组件中嵌入内容
2017/08/18 Javascript
vue实现微信获取用户信息的方法
2019/03/21 Javascript
在vue中阻止浏览器后退的实例
2019/11/06 Javascript
python获取文件版本信息、公司名和产品名的方法
2014/10/05 Python
使用python装饰器计算函数运行时间的实例
2018/04/21 Python
Django集成CAS单点登录的方法示例
2019/06/10 Python
django xadmin中form_layout添加字段显示方式
2020/03/30 Python
python文件排序的方法总结
2020/09/13 Python
Python SQLAlchemy库的使用方法
2020/10/13 Python
分享CSS3制作卡片式图片的方法
2016/07/08 HTML / CSS
用HTML5实现网站在windows8中贴靠的方法
2013/04/21 HTML / CSS
欧洲最大的婴幼儿服装及内衣公司:Petit Bateau(小帆船)
2016/08/16 全球购物
荷兰浴室和卫浴网上商店:Badkamerxxl.nl
2020/10/06 全球购物
金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)-> (一千零一拾一元整)输出
2015/05/29 面试题
怎样写好自我评价呢?
2014/02/16 职场文书
餐饮投资计划书
2014/04/25 职场文书
无传销社区工作方案
2014/05/13 职场文书
学雷锋宣传标语
2014/06/25 职场文书
摄影专业毕业生求职信
2014/08/05 职场文书
班组拓展活动方案
2014/08/14 职场文书
警察正风肃纪剖析材料
2014/10/16 职场文书
canvas绘制折线路径动画实现
2021/05/12 Javascript
Python使用DFA算法过滤内容敏感词
2022/04/22 Python