基于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 cookielib 登录人人网的实现代码
Dec 19 Python
python创建只读属性对象的方法(ReadOnlyObject)
Feb 10 Python
两个使用Python脚本操作文件的小示例分享
Aug 27 Python
python OpenCV学习笔记直方图反向投影的实现
Feb 07 Python
python使用socket创建tcp服务器和客户端
Apr 12 Python
解决安装tensorflow遇到无法卸载numpy 1.8.0rc1的问题
Jun 13 Python
如何在django里上传csv文件并进行入库处理的方法
Jan 02 Python
python判断字符串或者集合是否为空的实例
Jan 23 Python
django中的图片验证码功能
Sep 18 Python
Python代码一键转Jar包及Java调用Python新姿势
Mar 10 Python
jupyternotebook 撤销删除的操作方式
Apr 17 Python
python实现在线翻译
Jun 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
php获取根域名方法汇总
2014/10/28 PHP
thinkphp3.2实现上传图片的控制器方法
2016/04/28 PHP
PHP使用PHPExcel实现批量上传到数据库的方法
2017/06/08 PHP
PHP 计算两个特别大的整数实例代码
2018/05/07 PHP
laravel 解决Validator使用中出现的问题
2019/10/25 PHP
图片格式的JavaScript和CSS速查手册
2007/08/20 Javascript
jquery ajax 同步异步的执行示例代码
2010/06/23 Javascript
在Ajax中使用Flash实现跨域数据读取的实现方法
2010/12/02 Javascript
基于jquery实现的鼠标拖拽元素复制并写入效果
2011/08/23 Javascript
js中iframe调用父页面的方法
2014/10/30 Javascript
jquery实现textarea输入框限制字数的方法
2015/01/15 Javascript
简单谈谈javascript代码复用模式
2015/01/28 Javascript
PHPMyAdmin导入时提示文件大小超出PHP限制的解决方法
2015/03/30 Javascript
javascript原始值和对象引用实例分析
2015/04/25 Javascript
javascript实现Table间隔色以及选择高亮(和动态切换数据)的方法
2015/05/14 Javascript
基于jQuery实现点击弹出层实例代码
2016/01/01 Javascript
js绘制购物车抛物线动画
2020/11/18 Javascript
jQuery实现简单的tab标签页效果
2016/09/12 Javascript
简单谈谈Vue 模板各类数据绑定
2016/09/25 Javascript
jQuery实现的简单排序功能示例【冒泡排序】
2017/01/13 Javascript
ES6学习教程之模板字符串详解
2017/10/09 Javascript
Bootstrap table使用方法汇总
2017/11/17 Javascript
d3.js实现自定义多y轴折线图的示例代码
2018/05/30 Javascript
详解关于vue2.0工程发布上线操作步骤
2018/09/27 Javascript
通过Kettle自定义jar包供javascript使用
2020/01/29 Javascript
Python的动态重新封装的教程
2015/04/11 Python
Python+matplotlib+numpy绘制精美的条形统计图
2018/01/02 Python
Python使用百度翻译开发平台实现英文翻译为中文功能示例
2019/08/08 Python
python分别打包出32位和64位应用程序
2020/02/18 Python
浅析python表达式4+0.5值的数据类型
2020/02/26 Python
详解Ubuntu环境下部署Django+uwsgi+nginx总结
2020/04/02 Python
解决import tensorflow as tf 出错的原因
2020/04/16 Python
tensorflow模型文件(ckpt)转pb文件的方法(不知道输出节点名)
2020/04/22 Python
python属于哪种语言
2020/08/16 Python
利用纯CSS3实现tab选项卡切换示例代码
2016/09/21 HTML / CSS
班会关于环保演讲稿
2013/12/29 职场文书