基于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 相关文章推荐
pyqt4教程之messagebox使用示例分享
Mar 07 Python
python在windows下实现备份程序实例
Jul 04 Python
Python Socket编程入门教程
Jul 11 Python
Python request设置HTTPS代理代码解析
Feb 12 Python
sublime python3 输入换行不结束的方法
Apr 19 Python
破解安装Pycharm的方法
Oct 19 Python
python利用requests库模拟post请求时json的使用教程
Dec 07 Python
基于python模拟bfs和dfs代码实例
Nov 19 Python
重构Python代码的六个实例
Nov 25 Python
python爬虫中抓取指数的实例讲解
Dec 01 Python
pycharm远程连接服务器并配置python interpreter的方法
Dec 23 Python
python中使用 unittest.TestCase单元测试的用例详解
Aug 30 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即时捕捉PHP中的错误并发送email通知的实现代码
2013/01/19 PHP
php处理文件的小例子(解压缩,删除目录)
2013/02/03 PHP
PHP使用PHPMailer发送邮件的简单使用方法
2013/11/12 PHP
php从数据库查询结果生成树形列表的方法
2015/04/17 PHP
php文件缓存类用法实例分析
2015/04/22 PHP
适用于初学者的简易PHP文件上传类
2015/10/29 PHP
PHP微信开发之根据用户回复关键词\位置返回附近信息
2016/06/24 PHP
php封装的pdo数据库操作工具类与用法示例
2019/05/08 PHP
PHP获取php,mysql,apche的版本信息及更多服务器信息
2021/03/09 PHP
JS 文件本身编码转换 图文教程
2009/10/12 Javascript
Javascript学习笔记7 原型链的原理
2010/01/11 Javascript
js如何获取object类型里的键值
2014/02/18 Javascript
jquery插件qrcode在线生成二维码
2015/04/26 Javascript
vue插件vue-resource的使用笔记(小结)
2017/08/04 Javascript
微信小程序组件之srcoll-view的详解
2017/10/19 Javascript
Vue源码解析之Template转化为AST的实现方法
2018/12/14 Javascript
防止Layui form表单重复提交的实现方法
2019/09/10 Javascript
Vue.directive 实现元素scroll逻辑复用
2019/11/29 Javascript
React实现类似淘宝tab居中切换效果的示例代码
2020/06/02 Javascript
Python 元类使用说明
2009/12/18 Python
Python中请使用isinstance()判断变量类型
2014/08/25 Python
Python二分查找详解
2015/09/13 Python
python访问抓取网页常用命令总结
2017/04/11 Python
对Python3中的input函数详解
2018/04/22 Python
python机器学习之神经网络实现
2018/10/13 Python
美国独家设计师眼镜在线光学商店:Glasses Gallery
2017/12/28 全球购物
KIEHL’S科颜氏官方旗舰店:源自美国的顶级护肤品牌
2018/06/07 全球购物
建龙钢铁面试总结
2014/04/15 面试题
大学自荐信
2013/12/12 职场文书
小学教研工作制度
2014/01/15 职场文书
春游踏青活动方案
2014/08/14 职场文书
工作粗心大意检讨书
2014/09/18 职场文书
民政局2016年“六一”儿童节慰问活动总结
2016/04/06 职场文书
原生JavaScript实现简单五子棋游戏
2021/06/28 Javascript
MySQL系列之十二 备份与恢复
2021/07/02 MySQL
python数字图像处理之图像自动阈值分割示例
2022/06/28 Python