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写的创建文件夹自定义函数mkdir()
Aug 25 Python
Python利用Beautiful Soup模块搜索内容详解
Mar 29 Python
利用Python将时间或时间间隔转为ISO 8601格式方法示例
Sep 05 Python
python 中文件输入输出及os模块对文件系统的操作方法
Aug 27 Python
解决python opencv无法显示图片的问题
Oct 28 Python
解决Pycharm下面出现No R interpreter defined的问题
Oct 29 Python
Python 3.8新特征之asyncio REPL
May 28 Python
Django认证系统实现的web页面实现代码
Aug 12 Python
Python列表原理与用法详解【创建、元素增加、删除、访问、计数、切片、遍历等】
Oct 30 Python
Python Django路径配置实现过程解析
Nov 05 Python
python中time tzset()函数实例用法
Feb 18 Python
python机器学习创建基于规则聊天机器人过程示例详解
Nov 02 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通过header实现文本文件下载的代码
2010/08/08 PHP
php可应用于面包屑导航的迭代寻找家谱树实现方法
2015/02/02 PHP
php的4种常见运行方式
2015/03/20 PHP
php提取身份证号码中的生日日期以及验证是否为成年人的函数
2015/09/29 PHP
Yii2.0表关联查询实例分析
2016/07/18 PHP
ExtJS的FieldSet的column列布局
2009/11/20 Javascript
JavaScript 闭包在封装函数时的简单分析
2009/11/28 Javascript
一个很简单的jquery+xml+ajax的无刷新树结构(无css,后台是c#)
2010/06/02 Javascript
一个原生的用户等级的进度条
2010/07/03 Javascript
再论Javascript下字符串连接的性能
2011/03/05 Javascript
js history对象简单实现返回和前进
2013/10/30 Javascript
jQuery中prevUntil()方法用法实例
2015/01/08 Javascript
ajax在兼容模式下失效的快速解决方法
2016/03/22 Javascript
微信小程序 require机制详解及实例代码
2016/12/14 Javascript
js实现常见的工具条效果
2017/03/02 Javascript
js实现下拉框效果(select)
2017/03/28 Javascript
微信小程序 密码输入(源码下载)
2017/06/27 Javascript
vue实现密码显示与隐藏按钮的自定义组件功能
2019/04/23 Javascript
vue实现树形结构样式和功能的实例代码
2019/10/15 Javascript
JavaScript实现随机点名器
2020/03/25 Javascript
在Python中使用Mako模版库的简单教程
2015/04/08 Python
详细解析Python中__init__()方法的高级应用
2015/05/11 Python
Python 输入一个数字判断成绩分数等级的方法
2018/11/15 Python
python处理大日志文件
2019/07/23 Python
Matplotlib使用Cursor实现UI定位的示例代码
2020/03/12 Python
基于selenium及python实现下拉选项定位select
2020/07/22 Python
python将下载到本地m3u8视频合成MP4的代码详解
2020/11/24 Python
英国123鲜花网站:123 Flowers
2019/07/07 全球购物
飞利浦法国官网:Philips法国
2019/07/10 全球购物
简述Linux文件系统通过i节点把文件的逻辑结构和物理结构转换的工作过程
2012/04/17 面试题
公司领导推荐信
2013/11/12 职场文书
季度思想汇报
2014/01/01 职场文书
餐饮食品安全责任书
2015/01/29 职场文书
幼儿园大班教师随笔
2015/08/14 职场文书
人民币使用说明书
2019/04/17 职场文书
学会用Python实现滑雪小游戏,再也不用去北海道啦
2021/05/20 Python