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数组的处理代码
Jan 04 Python
Python实现的异步代理爬虫及代理池
Mar 17 Python
python运行其他程序的实现方法
Jul 14 Python
python 实现在Excel末尾增加新行
May 02 Python
Linux下Pycharm、Anaconda环境配置及使用踩坑
Dec 19 Python
python实现多层感知器
Jan 18 Python
django admin后台添加导出excel功能示例代码
May 15 Python
Python3实现定时任务的四种方式
Jun 03 Python
Python实现多线程下载脚本的示例代码
Apr 03 Python
在pyCharm中下载第三方库的方法
Apr 18 Python
解决numpy和torch数据类型转化的问题
May 23 Python
Python如何加载模型并查看网络
Jul 15 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 输出简单动态WAP页面
2009/06/09 PHP
Laravel框架处理用户的请求操作详解
2019/12/20 PHP
js刷新框架子页面的七种方法代码
2008/11/20 Javascript
用jquery实现下拉菜单效果的代码
2010/07/25 Javascript
基于jquery的跨域调用文件
2010/11/19 Javascript
jQuery源码解读之removeClass()方法分析
2015/02/20 Javascript
简介JavaScript中substring()方法的使用
2015/06/06 Javascript
浅谈js 闭包引起的内存泄露问题
2015/06/22 Javascript
jQuery实现图片与文字描述左右滑动自动切换的方法
2015/07/27 Javascript
JavaScript中数组添加值和访问值常见问题
2016/02/06 Javascript
JavaScript 数组some()和filter()的用法及区别
2016/05/20 Javascript
AngularJS基础 ng-copy 指令实例代码
2016/08/01 Javascript
Bootstrap实现input控件失去焦点时验证
2016/08/04 Javascript
JavaScript仿聊天室聊天记录
2016/12/27 Javascript
Vue+Element使用富文本编辑器的示例代码
2017/08/14 Javascript
如何重置vue打印变量的显示方式
2017/12/06 Javascript
p5.js临摹动态图形的方法
2019/10/23 Javascript
node.js基础知识汇总
2020/08/25 Javascript
vue实现登录、注册、退出、跳转等功能
2020/12/23 Vue.js
python中reduce()函数的使用方法示例
2017/09/29 Python
python如何让类支持比较运算
2018/03/20 Python
Vue的el-scrollbar实现自定义滚动
2018/05/29 Python
Python3+django2.0+apache2+ubuntu14部署网站上线的方法
2018/07/07 Python
python 实现语音聊天机器人的示例代码
2018/12/02 Python
python实现贪吃蛇游戏
2020/03/21 Python
Python实现大数据收集至excel的思路详解
2020/01/03 Python
Django多数据库联用实现方法解析
2020/11/12 Python
Python datetime模块的使用示例
2021/02/02 Python
Html5之title吸顶功能
2018/06/04 HTML / CSS
美国瑜伽服装和装备购物网站:Mukha Yoga
2019/02/22 全球购物
Tiqets英国:智能手机上的文化和娱乐门票
2019/07/10 全球购物
国际商务系学生个人的自我评价
2013/11/26 职场文书
个人四风问题对照检查材料思想汇报
2014/10/06 职场文书
小学一年级数学教学计划
2015/01/20 职场文书
边城读书笔记
2015/06/29 职场文书
八年级作文之友谊
2019/12/02 职场文书