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实现dnspod自动更新dns解析的方法
Feb 14 Python
python使用cookielib库示例分享
Mar 03 Python
pip 错误unused-command-line-argument-hard-error-in-future解决办法
Jun 01 Python
关于你不想知道的所有Python3 unicode特性
Nov 28 Python
Python中断言Assertion的一些改进方案
Oct 27 Python
Python的SimpleHTTPServer模块用处及使用方法简介
Jan 22 Python
网红编程语言Python将纳入高考你怎么看?
Jun 07 Python
Python绘制正余弦函数图像的方法
Aug 28 Python
Python 将Matrix、Dict保存到文件的方法
Oct 30 Python
python函数局部变量、全局变量、递归知识点总结
Nov 15 Python
pycharm 实现复制一行的快捷键
Jan 15 Python
python 命令行传参方法总结
May 25 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中的unicode和utf8编码
2015/06/10 PHP
PHP计算数组中值的和与乘积的方法(array_sum与array_product函数)
2016/04/01 PHP
PHP构造二叉树算法示例
2017/06/21 PHP
Javascript Select操作大集合
2009/05/26 Javascript
跟我学Nodejs(三)--- Node.js模块
2014/05/25 NodeJs
JavaScript实现的一个计算数字步数的算法分享
2014/12/06 Javascript
jQuery实现360°全景拖动展示
2015/03/18 Javascript
JQuery 传送中文乱码问题的简单解决办法
2016/05/24 Javascript
解决前端跨域问题方案汇总
2016/11/20 Javascript
基于jQuery实现表格的排序
2016/12/02 Javascript
原生JavaScript实现AJAX、JSONP
2017/02/07 Javascript
nodejs中全局变量的实例解析
2017/03/07 NodeJs
详解vue2路由vue-router配置(懒加载)
2017/04/08 Javascript
Vue axios 中提交表单数据(含上传文件)
2017/07/06 Javascript
实时监控input框,实现输入框与下拉框联动的实例
2018/01/23 Javascript
如何优雅的在一台vps(云主机)上面部署vue+mongodb+express项目
2019/01/20 Javascript
vue 解除鼠标的监听事件的方法
2019/11/13 Javascript
jQuery 添加元素和删除元素的方法
2020/07/15 jQuery
[01:09]DOTA2次级职业联赛 - 99战队宣传片
2014/12/01 DOTA
详解Python的单元测试
2015/04/28 Python
python比较两个列表大小的方法
2015/07/11 Python
python matplotlib画图库学习绘制常用的图
2019/03/19 Python
python requests库爬取豆瓣电视剧数据并保存到本地详解
2019/08/10 Python
Python实现银行账户资金交易管理系统
2020/01/03 Python
Alpine安装Python3依赖出现的问题及解决方法
2020/12/25 Python
css3弹性盒模型(Flexbox)详细介绍
2014/10/08 HTML / CSS
canvas之万花筒效果的简单实现(推荐)
2016/08/16 HTML / CSS
佳能法国商店:Canon法国
2019/02/14 全球购物
英国莱斯特松木橡木家具网上商店:Choice Furniture Superstore
2019/07/05 全球购物
JSF界面控制层技术
2013/06/17 面试题
教师见习期自我鉴定
2014/04/28 职场文书
2014年度思想工作总结
2014/11/27 职场文书
党员个人总结范文
2015/02/14 职场文书
自主招生自荐信范文
2015/03/04 职场文书
2015年幼儿园学期工作总结
2015/05/22 职场文书
赞美教师的句子
2019/09/02 职场文书