python traceback捕获并打印异常的方法


Posted in Python onAugust 31, 2018

异常处理是日常操作了,但是有时候不能只能打印我们处理的结果,还需要将我们的异常打印出来,这样更直观的显示错误

下面来介绍traceback模块来进行处理

try:
    1/0
  except Exception, e:
    print e

输出结果是integer division or modulo by zero,只知道是报了这个错,但是却不知道在哪个文件哪个函数哪一行报的错。

使用traceback

try:
    1/0
  except Exception, e:
    traceback.print_exc()

输出结果

Traceback (most recent call last):

        File "test_traceback.py", line 3, in <module>

           1/0

ZeroDivisionError: integer division or modulo by zero

这样非常直观有利于调试。

 traceback.print_exc()跟traceback.format_exc()有什么区别呢?

format_exc()返回字符串,print_exc()则直接给打印出来。

即traceback.print_exc()与print traceback.format_exc()效果是一样的。

print_exc()还可以接受file参数直接写入到一个文件。比如

traceback.print_exc(file=open('tb.txt','w+'))

写入到tb.txt文件去。

示例

# -*- coding:utf-8 -*-

import os
import logging
import traceback

#设置log, 这里使用默认log
logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
    datefmt='[%Y-%m_%d %H:%M:%S]',
    filename=os.path.dirname(os.path.realpath(__file__)) + "/" + 'test.log',
    filemode='a')

a=10
b=0 #设置为0, 走异常流程; 否则, 走正常流程

try:
  res=a/b
  logging.info("exec success, res:" + str(res))
except Exception,e:
  #format_exc()返回字符串,print_exc()则直接给打印出来
  traceback.print_exc()
  logging.warning("exec failed, failed msg:" + traceback.format_exc())

logging默认打印级别是warning.

日志打印:

[2017-11_17 07:51:02] trace.py[line:24] WARNING exec failed, failed msg:Traceback (most recent call last):

  File "trace.py", line 19, in <module>

    res=a/b

ZeroDivisionError: integer division or modulo by zero

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python数据结构之二叉树的遍历实例
Apr 29 Python
Python-基础-入门 简介
Aug 09 Python
Python性能优化的20条建议
Oct 25 Python
Python实现爬取知乎神回复简单爬虫代码分享
Jan 04 Python
详解Python函数作用域的LEGB顺序
May 14 Python
python将字符串以utf-8格式保存在txt文件中的方法
Oct 30 Python
基于sklearn实现Bagging算法(python)
Jul 11 Python
详解Django 时间与时区设置问题
Jul 23 Python
详解python内置常用高阶函数(列出了5个常用的)
Feb 21 Python
Django单元测试中Fixtures用法详解
Feb 25 Python
tensorflow dataset.shuffle、dataset.batch、dataset.repeat顺序区别详解
Jun 03 Python
Python2.x与3​​.x版本有哪些区别
Jul 09 Python
基于python中theano库的线性回归
Aug 31 #Python
基于随机梯度下降的矩阵分解推荐算法(python)
Aug 31 #Python
python实现梯度下降算法
Mar 24 #Python
wtfPython—Python中一组有趣微妙的代码【收藏】
Aug 31 #Python
opencv python 图像去噪的实现方法
Aug 31 #Python
python+numpy+matplotalib实现梯度下降法
Aug 31 #Python
python实现随机梯度下降法
Mar 24 #Python
You might like
Yii2框架BootStrap样式的深入理解
2016/11/07 PHP
yii2-GridView在开发中常用的功能及技巧总结
2017/01/07 PHP
PHP7 foreach() 函数修改
2021/03/09 PHP
在IE,Firefox,Safari,Chrome,Opera浏览器上调试javascript
2008/12/02 Javascript
使用JQUERY Tabs插件宿主IFRAMES
2010/01/01 Javascript
jQuery EasyUI API 中文文档 - NumberSpinner数值微调器使用介绍
2011/10/21 Javascript
一个简单的Ext.XTemplate的实例代码
2012/03/18 Javascript
jquery的ajaxSubmit()异步上传图片并保存表单数据演示代码
2013/06/04 Javascript
js控制表单奇偶行样式的简单方法
2013/07/31 Javascript
js操作table元素实现表格行列新增、删除技巧总结
2015/11/18 Javascript
判断js的Array和Object的实现方法
2016/08/29 Javascript
jquery二级目录选中当前页的css样式
2016/12/08 Javascript
微信小程序 首页制作简单实例
2017/04/07 Javascript
Bootstrap Table 在指定列中添加下拉框控件并获取所选值
2017/07/31 Javascript
javascript流程控制语句集合
2017/09/18 Javascript
ES6如何用一句代码实现函数的柯里化
2020/01/18 Javascript
Vue 中获取当前时间并实时刷新的实现代码
2020/05/12 Javascript
[10:14]2018DOTA2国际邀请赛寻真——paiN Gaming不仅为自己而战
2018/08/14 DOTA
在IIS服务器上以CGI方式运行Python脚本的教程
2015/04/25 Python
python判断windows系统是32位还是64位的方法
2015/05/11 Python
Python的Scrapy爬虫框架简单学习笔记
2016/01/20 Python
python开发简易版在线音乐播放器
2017/03/03 Python
基于python绘制科赫雪花
2018/06/22 Python
Python3获取电脑IP、主机名、Mac地址的方法示例
2019/04/11 Python
Python设置matplotlib.plot的坐标轴刻度间隔以及刻度范围
2019/06/25 Python
对Python _取log的几种方式小结
2019/07/25 Python
使用tensorflow实现VGG网络,训练mnist数据集方式
2020/05/26 Python
详解CSS3弹性伸缩盒
2020/09/21 HTML / CSS
优秀的教师个人的中文求职信
2013/09/21 职场文书
班级道德讲堂实施方案
2014/02/24 职场文书
生产部厂长职位说明书
2014/03/03 职场文书
优秀党员申报材料
2014/12/18 职场文书
先进班组事迹材料
2014/12/25 职场文书
小学教师节活动总结
2015/03/20 职场文书
mysql对于模糊查询like的一些汇总
2021/05/09 MySQL
Python tensorflow卷积神经Inception V3网络结构
2022/05/06 Python