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脚本来实现最简单的FTP下载的教程
May 04 Python
通过数据库对Django进行删除字段和删除模型的操作
Jul 21 Python
python爬虫入门教程--正则表达式完全指南(五)
May 25 Python
深入理解Python中range和xrange的区别
Nov 26 Python
Python Web程序部署到Ubuntu服务器上的方法
Feb 22 Python
Python3匿名函数用法示例
Jul 25 Python
Django之编辑时根据条件跳转回原页面的方法
Aug 21 Python
Python基于Tensor FLow的图像处理操作详解
Jan 15 Python
TensorBoard 计算图的可视化实现
Feb 15 Python
python实现提取COCO,VOC数据集中特定的类
Mar 10 Python
python+opencv实现移动侦测(帧差法)
Mar 20 Python
Python基于pillow库实现生成图片水印
Sep 14 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排序算法(冒泡排序,快速排序)
2012/10/09 PHP
JavaScript之Getters和Setters 平台支持等详细介绍
2012/12/07 Javascript
jquery入门必备的基本认识及实例(整理)
2013/06/24 Javascript
JS返回上一页实例代码通过图片和按钮分别实现
2013/08/16 Javascript
javascript弹出层输入框(示例代码)
2013/12/11 Javascript
javascript跨浏览器的属性判断方法
2014/03/16 Javascript
js实现键盘上下左右键选择文字并显示在文本框的方法
2015/05/07 Javascript
js生成随机数的过程解析
2015/11/24 Javascript
javascript实现禁止复制网页内容汇总
2015/12/30 Javascript
Bootstrap网格系统详解
2016/04/26 Javascript
详解JavaScript对象类型
2016/06/16 Javascript
原生JS实现几个常用DOM操作API实例
2017/01/19 Javascript
JS实现的tab页切换效果完整示例
2018/12/18 Javascript
JS/jQuery实现简单的开关灯效果【案例】
2019/02/19 jQuery
Vue SPA 初次进入加载动画实现代码
2019/11/14 Javascript
Vue filter 过滤当前时间 实现实时更新效果
2019/12/20 Javascript
JavaScript 实现HTML DOM增删改查操作的常见方法详解
2020/01/04 Javascript
JS Thunk 函数的含义和用法实例总结
2020/04/08 Javascript
使用Python内置的模块与函数进行不同进制的数的转换
2016/03/12 Python
django 按时间范围查询数据库实例代码
2018/02/11 Python
Python实现iOS自动化打包详解步骤
2018/10/03 Python
mac系统下Redis安装和使用步骤详解
2019/07/09 Python
浅谈Python中(&amp;,|)和(and,or)之间的区别
2019/08/07 Python
python剪切视频与合并视频的实现
2020/03/03 Python
如何在sublime编辑器中安装python
2020/05/20 Python
Python应用实现处理excel数据过程解析
2020/06/19 Python
python 多线程中join()的作用
2020/10/29 Python
Python监听键盘和鼠标事件的示例代码
2020/11/18 Python
python使用requests库爬取拉勾网招聘信息的实现
2020/11/20 Python
CSS3制作文字半透明倒影效果的两种实现方式
2014/08/08 HTML / CSS
利用CSS3实现文本框的清除按钮相关的一些效果
2015/06/23 HTML / CSS
十月份红领巾广播稿
2014/01/22 职场文书
涨价通知
2015/04/23 职场文书
2019奶茶店创业计划书范本!
2019/07/15 职场文书
详解CSS玩转图片Base64编码
2021/05/25 HTML / CSS
Kubernetes部署实例并配置Deployment、网络映射、副本集
2022/04/01 Servers