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读写文件方法总结
Jun 09 Python
Python实现导出数据生成excel报表的方法示例
Jul 12 Python
windows10下python3.5 pip3安装图文教程
Apr 02 Python
python 使用值来排序一个字典的方法
Nov 16 Python
python自定义线程池控制线程数量的示例
Feb 22 Python
在PyCharm中控制台输出日志分层级分颜色显示的方法
Jul 11 Python
python使用opencv实现马赛克效果示例
Sep 28 Python
Python any()函数的使用方法
Oct 28 Python
Python列表切片常用操作实例解析
Dec 16 Python
keras.layer.input()用法说明
Jun 16 Python
Python中生成ndarray实例讲解
Feb 22 Python
Python 如何解决稀疏矩阵运算
May 26 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/03/06 PHP
大家须知简单的php性能优化注意点
2016/01/04 PHP
PHP中获取文件创建日期、修改日期、访问时间的方法
2016/11/05 PHP
javascript json 新手入门文档
2009/12/03 Javascript
firebug的一个有趣现象介绍
2011/11/30 Javascript
javascript检测页面是否缩放的小例子
2013/05/16 Javascript
JavaScript cookie的设置获取删除详解
2014/02/11 Javascript
跟我学Nodejs(二)--- Node.js事件模块
2014/05/21 NodeJs
node.js使用npm 安装插件时提示install Error: ENOENT报错的解决方法
2014/11/20 Javascript
使用npm发布Node.JS程序包教程
2015/03/02 Javascript
简介JavaScript中的italics()方法的使用
2015/06/08 Javascript
JavaScript数据类型判定的总结笔记
2015/07/31 Javascript
jQuery+HTML5加入购物车代码分享
2020/10/29 Javascript
jQuery设置Easyui校验规则(推荐)
2016/11/21 Javascript
jQuery使用正则表达式替换dom元素标签用法示例
2017/01/16 Javascript
解决vue2.x中数据渲染以及vuex缓存的问题
2017/07/13 Javascript
浅谈React Native 中组件的生命周期
2017/09/08 Javascript
JavaScript实现轮播图效果代码实例
2019/09/28 Javascript
python中的五种异常处理机制介绍
2014/09/02 Python
python多线程threading.Lock锁用法实例
2014/11/01 Python
Python实现合并字典的方法
2015/07/07 Python
Django框架HttpResponse对象用法实例分析
2019/11/01 Python
TFRecord文件查看包含的所有Features代码
2020/02/17 Python
学习python需要有编程基础吗
2020/06/02 Python
Python使用Turtle模块绘制国旗的方法示例
2021/02/28 Python
波兰品牌内衣及泳装网上商店:Astratex.pl
2017/02/03 全球购物
网上常见的一份Linux面试题(多项选择部分)
2014/09/09 面试题
小学敬老月活动方案
2014/02/11 职场文书
集中整治工作方案
2014/05/01 职场文书
银行贷款收入证明
2014/10/17 职场文书
2015年综治宣传月活动总结
2015/03/25 职场文书
2015年预算员工作总结
2015/05/14 职场文书
2015年英语教学工作总结
2015/05/25 职场文书
小学音乐课歌曲《堆雪人》教学反思
2016/02/18 职场文书
2019通用版劳动合同范本!
2019/07/11 职场文书
Oracle数据库事务的开启与结束详解
2022/06/25 Oracle