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 相关文章推荐
pyqt4教程之实现半透明的天气预报界面示例
Mar 02 Python
python的dict,set,list,tuple应用详解
Jul 24 Python
Python socket C/S结构的聊天室应用实现
Nov 30 Python
Python的装饰器用法学习笔记
Jun 24 Python
Python如何获取系统iops示例代码
Sep 06 Python
python生成以及打开json、csv和txt文件的实例
Nov 16 Python
pytorch 模型可视化的例子
Aug 17 Python
Pytorch加载部分预训练模型的参数实例
Aug 18 Python
用python生成与调用cntk模型代码演示方法
Aug 26 Python
Python实现密钥密码(加解密)实例详解
Apr 26 Python
python打开音乐文件的实例方法
Jul 21 Python
python中如何对多变量连续赋值
Jun 03 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
15种PHP Encoder的比较
2007/04/17 PHP
PHP下10件你也许并不了解的事情
2008/09/11 PHP
PHP strncasecmp字符串比较的小技巧
2011/01/04 PHP
解析MySql与Java的时间类型
2013/06/22 PHP
php输出1000以内质数(素数)示例
2014/02/16 PHP
PHP快速排序quicksort实例详解
2016/09/28 PHP
php基于ob_start(ob_gzhandler)实现网页压缩功能的方法
2017/02/18 PHP
PHP实现的简单AES加密解密算法实例
2017/05/29 PHP
PHP利用pdo_odbc实现连接数据库示例【基于ThinkPHP5.1搭建的项目】
2019/05/13 PHP
建议大家看下JavaScript重要知识更新
2007/07/08 Javascript
关于IE浏览器以及Firefox下的javascript冒泡事件的响应层级
2010/10/14 Javascript
jquery一句话全选/取消全选
2011/03/01 Javascript
一个JavaScript的求爱小特效
2014/05/09 Javascript
Angularjs 基础入门
2014/12/26 Javascript
JavaScript中的getTimezoneOffset()方法使用详解
2015/06/10 Javascript
AngularJS 表达式详细讲解及实例代码
2016/07/26 Javascript
基于MVC+EasyUI的web开发框架之使用云打印控件C-Lodop打印页面或套打报关运单信息
2016/08/29 Javascript
详解vue静态资源打包中的坑与解决方案
2018/02/05 Javascript
webpack打包react项目的实现方法
2018/06/21 Javascript
刷新页面后让控制台的js代码继续执行
2019/09/20 Javascript
Python脚本实现格式化css文件
2015/04/08 Python
python基础_文件操作实现全文或单行替换的方法
2017/09/04 Python
微信跳一跳辅助python代码实现
2018/01/05 Python
朴素贝叶斯Python实例及解析
2018/11/19 Python
python中操作文件的模块的方法总结
2021/02/04 Python
WSDL的操作类型主要有几种
2013/07/19 面试题
供货协议书
2014/04/22 职场文书
带病坚持工作事迹
2014/05/03 职场文书
社区综治工作汇报
2014/10/27 职场文书
导游词格式
2015/02/13 职场文书
银行求职自荐信范文
2015/03/04 职场文书
党小组鉴定意见
2015/06/02 职场文书
单独二胎证明
2015/06/24 职场文书
商务宴会祝酒词
2015/08/11 职场文书
学校远程教育工作总结
2015/08/11 职场文书
员工给公司的建议书
2019/06/24 职场文书