基于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爬取软考试题之ip自动代理
Mar 28 Python
Python实现将罗马数字转换成普通阿拉伯数字的方法
Apr 19 Python
python3 shelve模块的详解
Jul 08 Python
浅谈python 线程池threadpool之实现
Nov 17 Python
python 删除指定时间间隔之前的文件实例
Apr 24 Python
解决seaborn在pycharm中绘图不出图的问题
May 24 Python
python批量修改ssh密码的实现
Aug 08 Python
Python MongoDB 插入数据时已存在则不执行,不存在则插入的解决方法
Sep 24 Python
Pytorch 搭建分类回归神经网络并用GPU进行加速的例子
Jan 09 Python
Python制作简易版小工具之计算天数的实现思路
Feb 13 Python
pyecharts调整图例与各板块的位置间距实例
May 16 Python
Python decimal模块使用方法详解
Jun 08 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中exec函数和shell_exec函数的区别
2014/08/20 PHP
CodeIgniter表单验证方法实例详解
2016/03/03 PHP
PHP记录和读取JSON格式日志文件
2016/07/07 PHP
JS中getYear()和getFullYear()区别分析
2014/07/04 Javascript
JS实现带关闭功能的阿里妈妈网站顶部滑出banner工具条代码
2015/09/17 Javascript
JavaScript判断手机号运营商是移动、联通、电信还是其他(代码简单)
2015/09/25 Javascript
js贪吃蛇游戏实现思路和源码
2016/04/14 Javascript
JavaScript实现Base64编码转换
2016/04/23 Javascript
JS小数转换为整数的方法分析
2017/01/07 Javascript
前端开发之便利店收银系统代码
2019/12/27 Javascript
基于jsbarcode 生成条形码并将生成的条码保存至本地+源码
2020/04/27 Javascript
JavaScript的垃圾回收机制与内存管理
2020/08/06 Javascript
浅谈vue在html中出现{{}}的原因及解决方式
2020/11/16 Javascript
[01:01:13]2018DOTA2亚洲邀请赛 4.5 淘汰赛 Mineski vs VG 第三场
2018/04/06 DOTA
python利用hook技术破解https的实例代码
2013/03/25 Python
Linux下通过python访问MySQL、Oracle、SQL Server数据库的方法
2016/04/23 Python
Python教程之全局变量用法
2016/06/27 Python
详谈Python中列表list,元祖tuple和numpy中的array区别
2018/04/18 Python
利用Python正则表达式过滤敏感词的方法
2019/01/21 Python
Python基本数据结构与用法详解【列表、元组、集合、字典】
2019/03/23 Python
使用pyinstaller打包PyQt4程序遇到的问题及解决方法
2019/06/24 Python
解决Mac下使用python的坑
2019/08/13 Python
Python 实现递归法解决迷宫问题的示例代码
2020/01/12 Python
python实现图片,视频人脸识别(dlib版)
2020/11/18 Python
python中四舍五入的正确打开方式
2021/01/18 Python
css3 仿写阿里云水纹效果的示例代码
2018/02/10 HTML / CSS
KEETSA环保床垫:更好的睡眠,更好的生活!
2016/11/24 全球购物
Big Green Smile德国网上商店:提供各种天然产品
2018/05/23 全球购物
英国DIY和家居装饰领域的主要品牌:Wickes
2019/11/26 全球购物
小学生自我评价范文
2014/01/25 职场文书
三年级音乐教学反思
2014/01/28 职场文书
知名企业招聘广告词大全
2014/03/18 职场文书
大学课外活动总结
2014/07/09 职场文书
施工员岗位职责范本
2015/04/11 职场文书
《水浒传》读后感3篇(范文)
2019/09/19 职场文书
Android Flutter实现图片滑动切换效果
2022/04/07 Java/Android