基于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读写ini文件示例(python读写文件)
Mar 25 Python
Python简单进程锁代码实例
Apr 27 Python
python处理图片之PIL模块简单使用方法
May 11 Python
python文件操作之目录遍历实例分析
May 20 Python
使用PyCharm配合部署Python的Django框架的配置纪实
Nov 19 Python
python spyder中读取txt为图片的方法
Apr 27 Python
对django后台admin下拉框进行过滤的实例
Jul 26 Python
Python爬虫爬取Bilibili弹幕过程解析
Oct 10 Python
pytorch 指定gpu训练与多gpu并行训练示例
Dec 31 Python
Python threading.local代码实例及原理解析
Mar 16 Python
Python pip 常用命令汇总
Oct 19 Python
python Yaml、Json、Dict之间的转化
Oct 19 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
火影忍者:三大瞳力之一的白眼,为什么没有写轮眼那么出色?
2020/03/02 日漫
PHP 超链接 抓取实现代码
2009/06/29 PHP
将word转化为swf 如同百度文库般阅读实现思路及代码
2013/08/09 PHP
php页面防重复提交方法总结
2013/11/25 PHP
PHP 7.1新特性的汇总介绍
2016/12/16 PHP
在云虚拟主机部署thinkphp5项目的步骤详解
2017/12/21 PHP
PHP chr()函数讲解
2019/02/11 PHP
php中数组最简单的使用方法
2020/12/27 PHP
js表数据排序 sort table data
2009/02/18 Javascript
用Javascript实现Sleep暂停功能代码
2010/09/03 Javascript
jquery的checkbox,radio,select等方法小结
2016/08/30 Javascript
xmlplus组件设计系列之列表(4)
2017/04/26 Javascript
利用yarn代替npm管理前端项目模块依赖的方法详解
2017/09/04 Javascript
shiro授权的实现原理
2017/09/21 Javascript
原生JS实现小小的音乐播放器
2017/10/16 Javascript
JS实现图片上传多次上传同一张不生效的处理方法
2018/08/06 Javascript
js图片查看器插件用法示例
2019/06/22 Javascript
微信小程序音乐播放器开发
2019/11/20 Javascript
浅谈JavaScript节流和防抖函数
2020/08/25 Javascript
JS highcharts动态柱状图原理及实现
2020/10/16 Javascript
将图片文件嵌入到wxpython代码中的实现方法
2014/08/11 Python
Python中模块string.py详解
2017/03/12 Python
Python计算库numpy进行方差/标准方差/样本标准方差/协方差的计算
2018/12/28 Python
详解Python学习之安装pandas
2019/04/16 Python
python实现鸢尾花三种聚类算法(K-means,AGNES,DBScan)
2019/06/27 Python
springboot配置文件抽离 git管理统 配置中心详解
2019/09/02 Python
解决Python数据可视化中文部分显示方块问题
2020/05/16 Python
Python使用matplotlib绘制圆形代码实例
2020/05/27 Python
如何基于Python实现word文档重新排版
2020/09/29 Python
HTML中meta标签及Keywords
2020/04/15 HTML / CSS
2014新年寄语
2014/01/20 职场文书
家庭教育先进个人事迹材料
2014/01/24 职场文书
抽样调查项目计划书
2014/04/24 职场文书
2016十一国庆节慰问信
2015/12/01 职场文书
2016大学先进团支部事迹材料
2016/03/01 职场文书
MySQL系列之十四 MySQL的高可用实现
2021/07/02 MySQL