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 相关文章推荐
JS设计模式之责任链模式实例详解
Feb 03 Python
在django view中给form传入参数的例子
Jul 19 Python
Python 使用list和tuple+条件判断详解
Jul 30 Python
python对数组进行排序,并输出排序后对应的索引值方式
Feb 28 Python
Pytorch十九种损失函数的使用详解
Apr 29 Python
基于Python第三方插件实现西游记章节标注汉语拼音的方法
May 22 Python
python使用hdfs3模块对hdfs进行操作详解
Jun 06 Python
Python 使用 PyQt5 开发的关机小工具分享
Jul 16 Python
python re.match()用法相关示例
Jan 27 Python
python 爬取腾讯视频评论的实现步骤
Feb 18 Python
Python一行代码实现自动发邮件功能
May 30 Python
Python中的datetime包与time包包和模块详情
Feb 28 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
php cookie 作用范围?不要在当前页面使用你的cookie
2009/03/24 PHP
openPNE常用方法分享
2011/11/29 PHP
php二维数组排序与默认自然排序的方法介绍
2013/04/27 PHP
php实现自动获取生成文章主题关键词功能的深入分析
2013/06/03 PHP
解析PHP高效率写法(详解原因)
2013/06/20 PHP
php获取网页请求状态程序示例
2014/06/17 PHP
PHP实现Markdown文章上传到七牛图床的实例内容
2020/02/11 PHP
又一个图片自动缩小的JS代码
2007/03/10 Javascript
gameboy网页闯关游戏(riddle webgame)--仿微信聊天的前端页面设计和难点
2016/02/21 Javascript
JS对HTML表格进行增删改操作
2016/08/22 Javascript
ionic由于使用了header和subheader导致被遮挡的问题的两种解决方法
2016/09/22 Javascript
用瀑布流的方式在网页上插入图片的简单实现方法
2016/09/23 Javascript
JavaScript实现水平进度条拖拽效果
2017/01/18 Javascript
自定义事件解决重复请求BUG的问题
2017/07/11 Javascript
Angularjs中的验证input输入框只能输入数字和小数点的写法(推荐)
2017/08/16 Javascript
推荐10款扩展Web表单的JS插件
2017/12/25 Javascript
node中IO以及定时器优先级详解
2019/05/10 Javascript
axios解决高并发的方法:axios.all()与axios.spread()的操作
2020/11/09 Javascript
[42:32]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第二场 11.27
2020/12/01 DOTA
Python的Django应用程序解决AJAX跨域访问问题的方法
2016/05/31 Python
Python简单获取自身外网IP的方法
2016/09/18 Python
python tools实现视频的每一帧提取并保存
2020/03/20 Python
如何基于Python制作有道翻译小工具
2019/12/16 Python
美国睫毛、眉毛精华液领导品牌:RevitaLash Cosmetics
2018/03/26 全球购物
STAUD官方网站:洛杉矶独有的闲适风格
2019/04/11 全球购物
C语言面试题
2013/05/19 面试题
家长会主持词开场白
2014/03/18 职场文书
生态养殖创业计划书
2014/05/06 职场文书
庆六一活动总结
2014/08/29 职场文书
护士工作失误检讨书
2014/09/14 职场文书
大学生党员个人剖析材料
2014/10/08 职场文书
PyTorch 如何设置随机数种子使结果可复现
2021/05/12 Python
MATLAB 全景图切割及盒图显示的实现步骤
2021/05/14 Python
MySQL完整性约束的定义与实例教程
2021/05/30 MySQL
MySQL Shell import_table数据导入的实现
2021/08/07 MySQL
解决Vmware虚拟机安装centos8报错“Section %Packages Does Not End With %End. Pane Is Dead”
2022/06/01 Servers