基于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中遍历文件的3个方法
Sep 02 Python
Linux下编译安装MySQL-Python教程
Feb 02 Python
pygame学习笔记(2):画点的三种方法和动画实例
Apr 15 Python
详解Django框架中用context来解析模板的方法
Jul 20 Python
Python 常用的安装Module方式汇总
May 06 Python
Python使用matplotlib绘制正弦和余弦曲线的方法示例
Jan 06 Python
python numpy实现文件存取的示例代码
May 26 Python
python redis 批量设置过期key过程解析
Nov 26 Python
使用Python构造hive insert语句说明
Jun 06 Python
使用Tensorflow-GPU禁用GPU设置(CPU与GPU速度对比)
Jun 30 Python
pandas将list数据拆分成行或列的实现
Dec 13 Python
Python+OpenCV实现在图像上绘制矩形
Mar 21 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 获取远程网页内容的函数
2009/09/08 PHP
PHP Array交叉表实现代码
2010/08/05 PHP
php获取bing每日壁纸示例分享
2014/02/25 PHP
php判断GIF图片是否为动画的方法
2020/09/04 PHP
PHP经典面试题集锦
2015/03/19 PHP
laravel如何开启跨域功能示例详解
2017/08/31 PHP
PHP设计模式入门之状态模式原理与实现方法分析
2020/04/26 PHP
firefox下对ajax的onreadystatechange的支持情况分析
2009/12/14 Javascript
javascript实现锁定网页、密码解锁效果(类似系统屏幕保护效果)
2014/08/15 Javascript
JavaScript中的console.trace()函数介绍
2014/12/29 Javascript
使用canvas实现仿新浪微博头像截取上传功能
2015/09/02 Javascript
浏览器复制插件zeroclipboard使用指南
2016/03/26 Javascript
vue2.0全局组件之pdf详解
2017/06/26 Javascript
AngularJS service之select下拉菜单效果
2017/07/28 Javascript
React Native仿美团下拉菜单的实例代码
2017/08/08 Javascript
详解vue填坑之解决部分浏览器不支持pushState方法
2018/07/12 Javascript
Vue中保存数据到磁盘文件的方法
2018/09/06 Javascript
深入理解Vue.js轻量高效的前端组件化方案
2018/12/10 Javascript
VUE UPLOAD 通过ACTION返回上传结果操作
2020/09/07 Javascript
如何利用node转发请求详解
2020/09/17 Javascript
原生js实现购物车功能
2020/09/23 Javascript
Python多线程编程简单介绍
2015/04/13 Python
Python里disconnect UDP套接字的方法
2015/04/23 Python
Python设置Socket代理及实现远程摄像头控制的例子
2015/11/13 Python
使用TensorFlow实现二分类的方法示例
2019/02/05 Python
对django中foreignkey的简单使用详解
2019/07/28 Python
python爬虫 基于requests模块的get请求实现详解
2019/08/20 Python
HTML5未来发展趋势
2016/02/01 HTML / CSS
H5 video poster属性设置视频封面的方法
2020/05/25 HTML / CSS
澳大利亚汽车零部件、音响及配件超市:Automotive Superstore
2018/06/19 全球购物
PHP面试题附答案
2015/11/28 面试题
私人会所最新创业计划书范文
2014/03/24 职场文书
报表员工作失误检讨书范文
2014/09/19 职场文书
2014年实习班主任工作总结
2014/11/08 职场文书
财务人员廉洁自律心得体会
2016/01/13 职场文书
mysql中between的边界,范围说明
2021/06/08 MySQL