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连接mysql并提交mysql事务示例
Mar 05 Python
利用Python爬虫给孩子起个好名字
Feb 14 Python
Python和C/C++交互的几种方法总结
May 11 Python
Python自动化导出zabbix数据并发邮件脚本
Aug 16 Python
PyCharm搭建Spark开发环境的实现步骤
Sep 05 Python
python单向链表的基本实现与使用方法【定义、遍历、添加、删除、查找等】
Oct 24 Python
如何基于python测量代码运行时间
Dec 25 Python
Keras框架中的epoch、bacth、batch size、iteration使用介绍
Jun 10 Python
python openCV实现摄像头获取人脸图片
Aug 20 Python
python如何遍历指定路径下所有文件(按按照时间区间检索)
Sep 14 Python
Python求区间正整数内所有素数之和的方法实例
Oct 13 Python
python 通过exifread读取照片信息
Dec 24 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
实用函数2
2007/11/08 PHP
在PHP中实现Javascript的escape()函数代码
2010/08/08 PHP
使用PHP接收POST数据,解析json数据
2013/06/28 PHP
在win7中搭建Linux+PHP 开发环境
2014/10/08 PHP
简单谈谈PHP中strlen 函数
2016/02/27 PHP
Yii2创建表单(ActiveForm)方法详解
2016/07/23 PHP
php下载远程大文件(获取远程文件大小)的实例
2017/06/17 PHP
Referer原理与图片防盗链实现方法详解
2019/07/03 PHP
JQuery学习笔记 nt-child的使用
2011/01/17 Javascript
JavaScript之IE的fireEvent方法详细解析
2013/11/20 Javascript
删除Javascript Object中间的key
2014/11/18 Javascript
JavaScript设计模式之抽象工厂模式介绍
2014/12/28 Javascript
Bootstrap每天必学之基础排版
2015/11/20 Javascript
json的结构与遍历方法实例分析
2017/04/25 Javascript
vue.js移动端app之上拉加载以及下拉刷新实战
2017/09/11 Javascript
对layui中表单元素的使用详解
2018/08/15 Javascript
Angular设置别名alias的方法
2018/11/08 Javascript
一篇文章带你浅入webpack的DLL优化打包
2020/02/20 Javascript
Node.js 中判断一个文件是否存在
2020/08/24 Javascript
[04:48]DOTA2亚洲邀请赛林书豪为VGJ加油
2017/04/01 DOTA
python装饰器与递归算法详解
2016/02/18 Python
解决Python的str强转int时遇到的问题
2018/04/09 Python
Python文件路径名的操作方法
2019/10/30 Python
Python应用实现处理excel数据过程解析
2020/06/19 Python
Html5移动端获奖无缝滚动动画实现示例
2018/06/25 HTML / CSS
canvas实现图片马赛克的示例代码
2018/03/26 HTML / CSS
意大利领先的线上奢侈品销售电商:Eleonora Bonucci
2017/10/17 全球购物
Internet主要有哪些网络群组成
2015/12/24 面试题
连锁经营管理专业大学生求职信
2013/10/30 职场文书
会计工作心得体会
2014/01/13 职场文书
迎新晚会策划方案
2014/06/13 职场文书
高中学生自我评价范文
2014/09/23 职场文书
2015年七一建党节活动方案
2015/05/05 职场文书
工程竣工验收申请报告
2015/05/15 职场文书
聋哑人盗窃罪辩护词
2015/05/21 职场文书
nginx处理http请求实现过程解析
2021/03/31 Servers