基于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语言技巧之三元运算符使用介绍
Mar 04 Python
Python实现测试磁盘性能的方法
Mar 12 Python
Python的Flask框架中实现登录用户的个人资料和头像的教程
Apr 20 Python
python bottle框架支持jquery ajax的RESTful风格的PUT和DELETE方法
May 24 Python
python3+PyQt5实现拖放功能
Apr 24 Python
Python实现计算字符串中出现次数最多的字符示例
Jan 21 Python
用Python调用win命令行提高工作效率的实例
Aug 14 Python
Python3.7 pyodbc完美配置访问access数据库
Oct 03 Python
基于python检查SSL证书到期情况代码实例
Apr 04 Python
python+selenium+chromedriver实现爬虫示例代码
Apr 10 Python
Python实现Telnet自动连接检测密码的示例
Apr 16 Python
教你利用Selenium+python自动化来解决pip使用异常
May 20 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和MySQL保存和输出图片
2006/10/09 PHP
PHP静态新闻列表自动生成代码
2007/06/14 PHP
PHP编程中字符串处理的5个技巧小结
2007/11/13 PHP
php文件系统处理方法小结
2016/05/23 PHP
浅谈php中urlencode与rawurlencode的区别
2016/09/05 PHP
PHP入门教程之会话控制技巧(cookie与session)
2016/09/11 PHP
如何在标题栏显示框架内页面的标题
2007/02/03 Javascript
js实现浏览器的各种菜单命令比如打印、查看源文件等等
2013/10/24 Javascript
JavaScript中this详解
2015/09/01 Javascript
深入理解javascript中的 “this”
2017/01/17 Javascript
js如何获取网页所有图片
2017/05/12 Javascript
JavaScript运动框架 解决速度正负取整问题(一)
2017/05/17 Javascript
微信小程序tabbar底部导航
2018/11/05 Javascript
vue键盘事件点击事件加native操作
2020/07/27 Javascript
Vue3+elementui plus创建项目的方法
2020/12/01 Vue.js
[04:40]2016国际邀请赛中国区预选赛全程TOP10镜头集锦
2016/07/01 DOTA
python正则匹配查询港澳通行证办理进度示例分享
2013/12/27 Python
Python使用Mechanize模块编写爬虫的要点解析
2016/03/31 Python
Python 绘图和可视化详细介绍
2017/02/11 Python
Python实现输出程序执行进度百分比的方法
2017/09/16 Python
python实现百度语音识别api
2018/04/10 Python
Python3读取Excel数据存入MySQL的方法
2018/05/04 Python
Tensorflow中的placeholder和feed_dict的使用
2018/07/09 Python
python抓取京东小米8手机配置信息
2018/11/13 Python
对DataFrame数据中的重复行,利用groupby累加合并的方法详解
2019/01/30 Python
Python多线程操作之互斥锁、递归锁、信号量、事件实例详解
2020/03/24 Python
python中rb含义理解
2020/06/18 Python
tensorflow基于CNN实战mnist手写识别(小白必看)
2020/07/20 Python
Python爬虫与反爬虫大战
2020/07/30 Python
CSS3截取字符串实例代码【推荐】
2018/06/07 HTML / CSS
推荐WEB开发者最佳HTML5和CSS3代码生成器
2015/11/24 HTML / CSS
欧洲品牌瓷器餐具网上商店:Porzellantreff.de
2018/04/04 全球购物
广告语设计及教案
2014/03/21 职场文书
《桥》教学反思
2014/04/09 职场文书
2015年保育员个人工作总结
2015/05/13 职场文书
中学生打架检讨书之500字
2019/08/06 职场文书