基于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中的__init__()方法
May 02 Python
Windows下使Python2.x版本的解释器与3.x共存的方法
Oct 25 Python
Python用 KNN 进行验证码识别的实现方法
Feb 06 Python
Anaconda下安装mysql-python的包实例
Jun 11 Python
Python错误处理操作示例
Jul 18 Python
对python函数签名的方法详解
Jan 22 Python
用Python逐行分析文件方法
Jan 28 Python
python对常见数据类型的遍历解析
Aug 27 Python
解决python web项目意外关闭,但占用端口的问题
Dec 17 Python
使用PyTorch实现MNIST手写体识别代码
Jan 18 Python
python多项式拟合之np.polyfit 和 np.polyld详解
Feb 18 Python
Python编写可视化界面的全过程(Python+PyCharm+PyQt)
May 17 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遍历二维数组的代码
2011/04/22 PHP
PHP+jQuery 注册模块开发详解
2014/10/14 PHP
抛弃 PHP 代价太高
2016/04/26 PHP
PHP中Notice错误常见解决方法
2017/04/28 PHP
购物车实现的几种方式优缺点对比
2018/05/02 PHP
js 使用form表单select类实现级联菜单效果
2012/12/19 Javascript
jquery得到iframe src属性值的方法
2014/09/25 Javascript
javascript中call apply 的应用场景
2015/04/16 Javascript
JavaScript知识点总结(四)之逻辑OR运算符详解
2016/05/31 Javascript
基于jQuery实现淡入淡出效果轮播图
2020/07/31 Javascript
基于Layer+jQuery的自定义弹框
2020/05/26 Javascript
jquery,js简单实现类似Angular.js双向绑定
2017/01/13 Javascript
前端自动化开发之Node.js的环境搭建教程
2017/04/01 Javascript
基于JavaScript实现的插入排序算法分析
2017/04/14 Javascript
jQuery实现动态添加、删除按钮及input输入框的方法
2017/04/27 jQuery
浅谈webpack编译vue项目生成的代码探索
2017/12/11 Javascript
在Vant的基础上封装下拉日期控件的代码示例
2018/12/05 Javascript
Vuex mutitons和actions初使用详解
2019/03/04 Javascript
vue 点击展开显示更多(点击收起部分隐藏)
2019/04/09 Javascript
谈谈IntersectionObserver懒加载的具体使用
2019/10/15 Javascript
在Layui中操作数据表格,给指定单元格添加事件示例
2019/10/26 Javascript
JavaScript鼠标悬停事件用法解析
2020/05/15 Javascript
JS canvas实现画板和签字板功能
2021/02/23 Javascript
Python兔子毒药问题实例分析
2015/03/05 Python
Python实例一个类背后发生了什么
2016/02/09 Python
django_orm查询性能优化方法
2018/08/20 Python
python中嵌套函数的实操步骤
2019/02/27 Python
浅谈Python大神都是这样处理XML文件的
2019/05/31 Python
Tensorflow中的图(tf.Graph)和会话(tf.Session)的实现
2020/04/22 Python
文职个人求职信范文
2013/09/23 职场文书
检讨书范文300字
2015/01/28 职场文书
英文邀请函
2015/02/02 职场文书
公司要求试用期员工提交“述职报告”,该怎么写?
2019/07/17 职场文书
详解Html5项目适配系统深色模式方案总结
2021/04/14 HTML / CSS
电脑开机弹出documents文件夹怎么回事?弹出documents文件夹解决方法
2022/04/08 数码科技
MySQL的存储函数与存储过程的区别解析
2022/04/08 MySQL