基于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实现国外赌场热门游戏Craps(双骰子)
Mar 31 Python
Python使用lxml模块和Requests模块抓取HTML页面的教程
May 16 Python
Python实现批量压缩图片
Jan 25 Python
python pands实现execl转csv 并修改csv指定列的方法
Dec 12 Python
pandas DataFrame 删除重复的行的实现方法
Jan 29 Python
python实现桌面托盘气泡提示
Jul 29 Python
Django使用Celery加redis执行异步任务的实例内容
Feb 20 Python
Python如何批量获取文件夹的大小并保存
Mar 31 Python
浅谈cv2.imread()和keras.preprocessing中的image.load_img()区别
Jun 12 Python
使用TensorBoard进行超参数优化的实现
Jul 06 Python
python获取时间戳的实现示例(10位和13位)
Sep 23 Python
如何利用python读取micaps文件详解
Oct 18 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
ninety plus是什么?ninety plus咖啡好吗?
2021/03/04 新手入门
php截取指定2个字符之间字符串的方法
2015/04/15 PHP
php使用ZipArchive函数实现文件的压缩与解压缩
2015/10/27 PHP
php等比例缩放图片及剪切图片代码分享
2016/02/13 PHP
详解Laravel5.6 Passport实现Api接口认证
2018/07/27 PHP
零基础php编程好学吗
2019/10/11 PHP
类似框架的js代码
2006/11/09 Javascript
JS常见问题整理(持续更新)
2013/08/06 Javascript
JQuery实现的购物车功能(可以减少或者添加商品并自动计算价格)
2015/01/13 Javascript
JS实现网页表格自动变大缩小的方法
2015/03/09 Javascript
JavaScript判断按钮被点击的方法
2015/12/13 Javascript
基于匀速运动的实例讲解(侧边栏,淡入淡出)
2017/10/17 Javascript
Angular通过指令动态添加组件问题
2018/07/09 Javascript
Vue SSR 即时编译技术的实现
2020/05/06 Javascript
详解nginx配置vue h5 history去除#号
2020/11/09 Javascript
[04:48]DOTA2亚洲邀请赛林书豪为VGJ加油
2017/04/01 DOTA
Python PyQt5标准对话框用法示例
2017/08/23 Python
详解Python网络框架Django和Scrapy安装指南
2019/04/01 Python
python的几种矩阵相乘的公式详解
2019/07/10 Python
opencv3/C++ 平面对象识别&amp;透视变换方式
2019/12/11 Python
关于Python字符编码与二进制不得不说的一些事
2020/10/04 Python
关于python3.9安装wordcloud出错的问题及解决办法
2020/11/02 Python
几个解决兼容IE6\7\8不支持html5标签的几个方法
2013/01/07 HTML / CSS
周生生珠宝香港官网:Chow Sang Sang(香港及海外配送)
2019/09/05 全球购物
Ego Shoes官网:英国时髦鞋类品牌
2020/10/19 全球购物
实习评语
2013/12/16 职场文书
丧事主持词大全
2014/04/02 职场文书
奥林匹克的口号
2014/06/13 职场文书
小学生安全责任书
2014/07/25 职场文书
机关作风整顿个人剖析材料
2014/10/06 职场文书
5.12护士节活动总结
2015/02/10 职场文书
用Python的绘图库(matplotlib)绘制小波能量谱
2021/04/17 Python
MySQL 数据恢复的多种方法汇总
2021/06/21 MySQL
SQL模糊查询报:ORA-00909:参数个数无效问题的解决
2021/06/21 Oracle
详解Vue3使用axios的配置教程
2022/04/29 Vue.js
全网非常详细的pytest配置文件
2022/07/15 Python