基于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中函数传参详解
Jul 03 Python
Python简单网络编程示例【客户端与服务端】
May 26 Python
学习python中matplotlib绘图设置坐标轴刻度、文本
Feb 07 Python
Python实现的从右到左字符串替换方法示例
Jul 06 Python
Python不同目录间进行模块调用的实现方法
Jan 29 Python
python 并发编程 阻塞IO模型原理解析
Aug 20 Python
Python爬虫图片懒加载技术 selenium和PhantomJS解析
Sep 18 Python
Python文件操作函数用法实例详解
Dec 24 Python
如何更改 pandas dataframe 中两列的位置
Dec 27 Python
python计算波峰波谷值的方法(极值点)
Feb 18 Python
使用Python FastAPI构建Web服务的实现
Jun 08 Python
降低python版本的操作方法
Sep 11 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使用者状态管理功能的应用
2006/10/09 PHP
PHP 动态随机生成验证码类代码
2010/04/09 PHP
PHP使用适合阅读的格式显示文件大小的方法
2015/03/05 PHP
直接生成打开窗口代码,不必下载
2008/05/14 Javascript
jquery之超简单的div显示和隐藏特效demo(分享)
2013/07/09 Javascript
如何从jQuery的ajax请求中删除X-Requested-With
2013/12/11 Javascript
webapp框架AngularUI的demo改造之路
2014/12/21 Javascript
Javascript 拖拽雏形(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
分享纯手写漂亮的表单验证
2015/11/19 Javascript
JS实现支持Ajax验证的表单插件
2016/03/24 Javascript
jQuery+pjax简单示例汇总
2017/04/21 jQuery
Vue.js点击切换按钮改变内容的实例讲解
2018/08/22 Javascript
JavaScript实现文件下载并重命名代码实例
2019/12/12 Javascript
vue插件--仿微信小程序showModel实现模态提示窗功能
2020/08/19 Javascript
js 压缩图片的示例(只缩小体积,不更改图片尺寸)
2020/10/21 Javascript
[18:32]DOTA2 HEROS教学视频教你分分钟做大人-谜团
2014/06/12 DOTA
[56:46]Liquid vs IG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
Python实现嵌套列表去重方法示例
2017/12/28 Python
python OpenCV学习笔记直方图反向投影的实现
2018/02/07 Python
python发送告警邮件脚本
2018/09/17 Python
python实现按首字母分类查找功能
2019/10/31 Python
python实现超级玛丽游戏
2020/03/18 Python
Django高并发负载均衡实现原理详解
2020/04/04 Python
python如何利用paramiko执行服务器命令
2020/11/07 Python
python 实现汉诺塔游戏
2020/11/28 Python
CSS3的column-fill属性对齐列内容高度的用法详解
2016/07/01 HTML / CSS
全球酒店预订网站:Hotels.com
2016/08/10 全球购物
全球最大化妆品零售网站:SkinStore
2020/10/24 全球购物
物流仓储计划书
2014/01/10 职场文书
电子商务应届生自我鉴定
2014/01/13 职场文书
经贸日语专业自荐信
2014/09/02 职场文书
2015年领导干部廉洁自律工作总结
2015/05/26 职场文书
2015年机关作风和效能建设工作总结
2015/07/23 职场文书
校运会广播稿
2015/08/19 职场文书
开机音效回归! Windows 11重新引入开机铃声
2021/11/21 数码科技