基于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实现Linux下守护进程的编写方法
Aug 22 Python
python中的多线程实例教程
Aug 27 Python
python装饰器decorator介绍
Nov 21 Python
用yum安装MySQLdb模块的步骤方法
Dec 15 Python
Python中关键字nonlocal和global的声明与解析
Mar 12 Python
Django中间件基础用法详解
Jul 18 Python
Django ORM 常用字段与不常用字段汇总
Aug 09 Python
Python QTimer实现多线程及QSS应用过程解析
Jul 11 Python
拿来就用!Python批量合并PDF的示例代码
Aug 10 Python
python 实现aes256加密
Nov 27 Python
python实现A*寻路算法
Jun 13 Python
Python使用plt.boxplot()函数绘制箱图、常用方法以及含义详解
Aug 14 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读取flv文件的播放时间长度
2009/09/03 PHP
PHP 全角转半角实现代码
2010/05/16 PHP
Laravel框架路由配置总结、设置技巧大全
2014/09/03 PHP
针对thinkPHP5框架存储过程bug重写的存储过程扩展类完整实例
2018/06/16 PHP
PHP迭代器和生成器用法实例分析
2019/09/28 PHP
TP5框架实现的数据库备份功能示例
2020/04/05 PHP
javascript 函数调用规则
2009/08/26 Javascript
js function使用心得
2010/05/10 Javascript
js正则表达exec与match的区别说明
2014/01/29 Javascript
input禁止键盘及中文输入,但可以点击
2014/02/13 Javascript
用JS在浏览器中创建下载文件
2014/03/05 Javascript
jquery选择器使用详解
2014/04/08 Javascript
jQuery动画与特效详解
2015/02/01 Javascript
javascript正则表达式之分组概念与用法实例
2016/06/16 Javascript
微信小程序 WebSocket详解及应用
2017/01/21 Javascript
jQuery实现的记住帐号密码功能完整示例
2019/08/03 jQuery
vue+springboot图片上传和显示的示例代码
2020/02/14 Javascript
原生js实现瀑布流效果
2020/03/09 Javascript
JavaScript实现表单验证功能
2020/12/09 Javascript
在Python中使用NLTK库实现对词干的提取的教程
2015/04/08 Python
使用python编写udp协议的ping程序方法
2018/04/22 Python
Python3使用Matplotlib 绘制精美的数学函数图形
2019/04/11 Python
检测python爬虫时是否代理ip伪装成功的方法
2019/07/12 Python
python tornado使用流生成图片的例子
2019/11/18 Python
Python3中对json格式数据的分析处理
2021/01/28 Python
一款利用html5和css3动画排列人物头像的实例演示
2014/12/05 HTML / CSS
分享29个基于Bootstrap的HTML5响应式网页设计模板
2015/11/19 HTML / CSS
法国在线药房:1001Pharmacies
2021/03/07 全球购物
写给爸爸的道歉信
2014/01/15 职场文书
大学军训感言400字
2014/03/11 职场文书
诚信考试倡议书
2014/04/15 职场文书
信访工作经验交流材料
2014/05/23 职场文书
出差报告范文
2014/11/06 职场文书
音乐剧猫观后感
2015/06/04 职场文书
读鲁迅先生的经典名言
2019/08/20 职场文书
vue使用v-model进行跨组件绑定的基本实现方法
2021/04/28 Vue.js