基于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中的面向对象编程详解(上)
Apr 13 Python
python通过get,post方式发送http请求和接收http响应的方法
May 26 Python
详解Python中的元组与逻辑运算符
Oct 13 Python
Python模块结构与布局操作方法实例分析
Jul 24 Python
python 删除指定时间间隔之前的文件实例
Apr 24 Python
Python找出微信上删除你好友的人脚本写法
Nov 01 Python
python使用PyQt5的简单方法
Feb 27 Python
用Python将Excel数据导入到SQL Server的例子
Aug 24 Python
Python全栈之列表数据类型详解
Oct 01 Python
Python爬取新型冠状病毒“谣言”新闻进行数据分析
Feb 16 Python
python判断变量是否为列表的方法
Sep 17 Python
python实现测试工具(二)——简单的ui测试工具
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
php str_pad 函数使用详解
2009/01/13 PHP
php插件Xajax使用方法详解
2017/08/31 PHP
原生Js与jquery的多组处理, 仅展开一个区块的折叠效果
2011/01/09 Javascript
autoPlay 基于jquery的图片自动播放效果
2011/12/07 Javascript
JavaScript高级程序设计 读书笔记之十 本地对象Date日期
2012/02/27 Javascript
轻松创建nodejs服务器(9):实现非阻塞操作
2014/12/18 NodeJs
jQuery消息提示框插件Tipso
2015/05/04 Javascript
JavaScript编程的单例设计模讲解
2015/11/10 Javascript
Jquery中.bind()、.live()、.delegate()和.on()之间的区别详解
2017/08/01 jQuery
详解如何使用webpack+es6开发angular1.x
2017/08/16 Javascript
vue中阻止click事件冒泡,防止触发另一个事件的方法
2018/02/08 Javascript
详解angular脏检查原理及伪代码实现
2018/06/08 Javascript
jQuery实现的简单手风琴效果示例
2018/08/29 jQuery
详解vue-router数据加载与缓存使用总结
2018/10/29 Javascript
微信小程序数据统计和错误统计的实现方法
2019/06/26 Javascript
uniapp微信小程序实现一个页面多个倒计时
2020/11/01 Javascript
[03:41]DOTA2上海特锦赛小组赛第三日recap精彩回顾
2016/02/28 DOTA
python实现的登陆Discuz!论坛通用代码分享
2014/07/11 Python
关于Python中Inf与Nan的判断问题详解
2017/02/08 Python
Python 安装第三方库 pip install 安装慢安装不上的解决办法
2019/06/18 Python
解决Django中修改js css文件但浏览器无法及时与之改变的问题
2019/08/31 Python
python使用socket实现的传输demo示例【基于TCP协议】
2019/09/24 Python
python中bytes和str类型的区别
2019/10/21 Python
Python字典生成式、集合生成式、生成器用法实例分析
2020/01/07 Python
彻底解决Python包下载慢问题
2020/11/15 Python
python语言time库和datetime库基本使用详解
2020/12/25 Python
python解包用法详解
2021/02/17 Python
JD Sports德国官网:英国领先的运动鞋和运动服饰零售商
2018/02/26 全球购物
西班牙三叶草药房:Farmacias Trébol
2019/05/03 全球购物
介绍一下EJB的分类及其各自的功能及应用
2016/08/23 面试题
安全员岗位职责
2013/11/11 职场文书
2014元旦晚会策划方案
2014/02/19 职场文书
测量工程专业求职信
2014/02/24 职场文书
经典安踏广告词
2014/03/21 职场文书
立案决定书范文
2015/06/24 职场文书
SpringBoot 集成Redis 过程
2021/06/02 Redis