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实现的生成自我描述脚本分享(很有意思的程序)
Jul 18 Python
Python遍历目录的4种方法实例介绍
Apr 13 Python
Python的Django框架中自定义模版标签的示例
Jul 20 Python
python如何修改装饰器中参数
Mar 20 Python
python实现黑客字幕雨效果
Jun 21 Python
python requests 测试代理ip是否生效
Jul 25 Python
详解Python with/as使用说明
Dec 13 Python
python引用(import)某个模块提示没找到对应模块的解决方法
Jan 19 Python
Python PIL读取的图像发生自动旋转的实现方法
Jul 05 Python
pymysql模块的使用(增删改查)详解
Sep 09 Python
Python多线程threading创建及使用方法解析
Jun 17 Python
安装pyecharts1.8.0版本后导入pyecharts模块绘图时报错: “所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 ”的解决方法
Aug 18 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中使用数组指针函数操作数组示例
2014/11/19 PHP
php+Memcached实现简单留言板功能示例
2017/02/15 PHP
thinkphp5实现微信扫码支付
2019/12/23 PHP
js中document.write使用过程中的一点疑问解答
2014/03/20 Javascript
javascript中的括号()用法小结
2014/04/14 Javascript
一个JavaScript的求爱小特效
2014/05/09 Javascript
javascript关于继承的用法汇总
2014/12/20 Javascript
jquery实现简单的轮换出现效果实例
2015/07/23 Javascript
Bootstrap Modal遮罩弹出层代码分享
2016/11/21 Javascript
微信JSAPI Ticket接口签名详解
2020/06/28 Javascript
解决vue2.x中数据渲染以及vuex缓存的问题
2017/07/13 Javascript
vue2.0的虚拟DOM渲染思路分析
2018/08/09 Javascript
vue组件定义,全局、局部组件,配合模板及动态组件功能示例
2019/03/19 Javascript
JS中注入eval, Function等系统函数截获动态代码
2019/04/03 Javascript
sortable+element 实现表格行拖拽的方法示例
2019/06/07 Javascript
vue eslint简要配置教程详解
2019/07/26 Javascript
JS事件循环机制event loop宏任务微任务原理解析
2020/08/04 Javascript
基于Python的身份证号码自动生成程序
2014/08/15 Python
总结Python中逻辑运算符的使用
2015/05/13 Python
python中的字典使用分享
2016/07/31 Python
面向初学者的Python编辑器Mu
2018/10/08 Python
windows下python安装pip方法详解
2020/02/10 Python
python实现opencv+scoket网络实时图传
2020/03/20 Python
django 获取字段最大值,最新的记录操作
2020/08/09 Python
英国户外服装品牌:Craghoppers
2019/04/25 全球购物
PHP如何去执行一个SQL语句
2016/03/05 面试题
2013年办公室秘书的个人自我鉴定
2013/10/24 职场文书
幼儿园毕业家长感言
2014/02/10 职场文书
《跨越海峡的生命桥》教学反思
2014/02/24 职场文书
少儿节目主持串词
2014/04/02 职场文书
公司担保书格式范文
2014/05/12 职场文书
小学生美德少年事迹材料
2014/08/24 职场文书
2015年教师节感言
2015/08/03 职场文书
Java 泛型详解(超详细的java泛型方法解析)
2021/07/02 Java/Android
详解redis在微服务领域的贡献
2021/10/16 Redis
十大最强火系宝可梦,喷火龙上榜,第一名有双火属性
2022/03/18 日漫