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的面向对象思想分析
Jan 14 Python
使用Python保存网页上的图片或者保存页面为截图
Mar 05 Python
Django自定义插件实现网站登录验证码功能
Apr 19 Python
windows下Virtualenvwrapper安装教程
Dec 13 Python
Python使用pickle模块报错EOFError Ran out of input的解决方法
Aug 16 Python
便捷提取python导入包的属性方法
Oct 15 Python
python+pygame实现坦克大战
Sep 10 Python
利用pandas将非数值数据转换成数值的方式
Dec 18 Python
Python使用graphviz画流程图过程解析
Mar 31 Python
Python按照list dict key进行排序过程解析
Apr 04 Python
Python检测端口IP字符串是否合法
Jun 05 Python
pytorch model.cuda()花费时间很长的解决
Jun 01 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
深入了解php4(1)--回到未来
2006/10/09 PHP
PHP迅雷、快车、旋风下载专用链转换代码
2010/06/15 PHP
php的一个简单加密解密代码
2014/01/14 PHP
Destoon旺旺无法正常显示,点击提示“会员名不存在”的解决办法
2014/06/21 PHP
PHP获取网页所有连接的方法(附demo源码下载)
2016/03/30 PHP
php字符串截取函数mb_substr用法实例分析
2019/06/25 PHP
Yii框架响应组件用法实例分析
2019/09/04 PHP
jquery 操作日期、星期、元素的追加的实现代码
2012/02/07 Javascript
JS阻止用户多次提交示例代码
2014/03/26 Javascript
JavaScript中获取高度和宽度函数总结
2014/10/08 Javascript
js实现鼠标悬浮给图片加边框的方法
2015/01/30 Javascript
jQuery实现自定义checkbox和radio样式
2015/07/13 Javascript
js实现简单折叠、展开菜单的方法
2015/08/28 Javascript
详解AngularJS过滤器的使用
2016/03/11 Javascript
学JavaScript七大注意事项【必看】
2016/05/04 Javascript
react-native fetch的具体使用方法
2017/11/01 Javascript
Angular实现双向折叠列表组件的示例代码
2017/11/21 Javascript
详解React服务端渲染从入门到精通
2019/03/28 Javascript
关于element的表单组件整理笔记
2021/02/05 Javascript
python正则表达式判断字符串是否是全部小写示例
2013/12/25 Python
利用Tkinter(python3.6)实现一个简单计算器
2017/12/21 Python
解决python 无法加载downsample模型的问题
2018/10/25 Python
python中实现控制小数点位数的方法
2019/01/24 Python
Python实现二叉树前序、中序、后序及层次遍历示例代码
2019/05/18 Python
Servlet面试题库
2015/07/18 面试题
大学同学聚会邀请函
2014/01/19 职场文书
市场拓展计划书
2014/05/03 职场文书
酒会邀请函
2015/01/31 职场文书
幼儿教师辞职信范文
2015/03/02 职场文书
飞屋环游记观后感
2015/06/08 职场文书
我爱我班主题班会
2015/08/13 职场文书
大学生创业计划书
2019/06/24 职场文书
新手开公司创业注意事项有哪些?
2019/07/29 职场文书
详解Python生成器和基于生成器的协程
2021/06/03 Python
KVM基础命令详解
2022/04/30 Servers
nginx代理实现静态资源访问的示例代码
2022/07/07 Servers