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 12 Python
Python通过OpenCV的findContours获取轮廓并切割实例
Jan 05 Python
Python 保存矩阵为Excel的实现方法
Jan 28 Python
在macOS上搭建python环境的实现方法
Aug 13 Python
python单例模式原理与创建方法实例分析
Oct 26 Python
python导入不同目录下的自定义模块过程解析
Nov 18 Python
基于YUV 数据格式详解及python实现方式
Dec 09 Python
基于Python爬取爱奇艺资源过程解析
Mar 02 Python
python代码如何注释
Jun 01 Python
Linux安装Python3如何和系统自带的Python2并存
Jul 23 Python
如何Tkinter模块编写Python图形界面
Oct 14 Python
详解matplotlib中pyplot和面向对象两种绘图模式之间的关系
Jan 22 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-perl哈希算法实现(times33哈希算法)
2013/12/30 PHP
PHP实现通过中文字符比率来判断垃圾评论的方法
2014/10/20 PHP
php通过array_merge()函数合并关联和非关联数组的方法
2015/03/18 PHP
Yii实现自动加载类地图的方法
2015/04/01 PHP
PHP基于进程控制函数实现多线程
2020/12/09 PHP
图片自动缩小的js代码,用以防止图片撑破页面
2007/03/12 Javascript
javascript来定义类的规范小结
2010/11/19 Javascript
jQuery中odd选择器的定义和用法
2014/12/23 Javascript
使用jquery+CSS实现控制打印样式
2014/12/31 Javascript
浅析2种JavaScript继承方式
2015/12/04 Javascript
javascript DIV实现跟随鼠标移动
2020/03/19 Javascript
JavaScript简单获取页面图片原始尺寸的方法
2016/06/21 Javascript
微信小程序教程之本地图片上传(leancloud)实例详解
2016/11/16 Javascript
React-router v4 路由配置方法小结
2017/08/08 Javascript
jQuery.validate.js表单验证插件的使用代码详解
2018/10/22 jQuery
javascript面向对象三大特征之继承实例详解
2019/07/24 Javascript
JavaScript生成一个不重复的ID的方法示例
2019/09/16 Javascript
vue相同路由跳转强制刷新该路由组件操作
2020/08/05 Javascript
[01:14:34]DOTA2上海特级锦标赛C组资格赛#2 LGD VS Newbee第一局
2016/02/28 DOTA
Python:Scrapy框架中Item Pipeline组件使用详解
2017/12/27 Python
python实现列表中由数值查到索引的方法
2018/06/27 Python
python3基于OpenCV实现证件照背景替换
2018/07/18 Python
解决python打不开文件(文件不存在)的问题
2019/02/18 Python
Python multiprocess pool模块报错pickling error问题解决方法分析
2019/03/20 Python
python 利用zmail库发送邮件
2020/09/11 Python
Python3.7安装PyQt5 运行配置Pycharm的详细教程
2020/10/15 Python
非常漂亮的CSS3百叶窗焦点图动画
2016/02/24 HTML / CSS
M.M.LaFleur官网:美国职业女装品牌
2020/10/27 全球购物
联想智利官方网站:Lenovo Chile
2020/06/03 全球购物
求职简历自荐信范文
2013/10/21 职场文书
2013年军训通讯稿
2014/02/05 职场文书
酒店值班经理的工作职责范本
2014/02/18 职场文书
说明书范文
2014/05/07 职场文书
应届硕士毕业生自荐信
2014/05/26 职场文书
12.4法制宣传日活动总结
2014/08/26 职场文书
运动会宣传稿50字
2015/07/23 职场文书