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最基本的输入输出详解
Apr 25 Python
python获得一个月有多少天的方法
Jun 04 Python
Python中import导入上一级目录模块及循环import问题的解决
Jun 04 Python
Python运行报错UnicodeDecodeError的解决方法
Jun 07 Python
基于Python3 逗号代码 和 字符图网格(详谈)
Jun 22 Python
Selenium控制浏览器常见操作示例
Aug 13 Python
Django框架会话技术实例分析【Cookie与Session】
May 24 Python
python django生成迁移文件的实例
Aug 31 Python
python DataFrame转dict字典过程详解
Dec 26 Python
详解Python 中的容器 collections
Aug 17 Python
python全面解析接口返回数据
Feb 12 Python
Python实战之大鱼吃小鱼游戏的实现
Apr 01 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
我的论坛源代码(三)
2006/10/09 PHP
构建简单的Webmail系统
2006/10/09 PHP
PHP使用GIFEncoder类生成的GIF动态图片验证码
2014/07/01 PHP
php实现中文转数字
2016/02/18 PHP
基于PHP实现商品成交时发送短信功能
2016/05/11 PHP
搭建自己的PHP MVC框架详解
2017/08/16 PHP
解决laravel5.4下的group by报错的问题
2019/10/16 PHP
jQuery阻止冒泡和HTML默认操作
2010/11/17 Javascript
JS验证控制输入中英文字节长度(input、textarea等)具体实例
2013/06/21 Javascript
jQuery中offsetParent()方法用法实例
2015/01/19 Javascript
基于JavaScript实现瀑布流效果(循环渐近)
2016/01/27 Javascript
关于Bootstrap弹出框无法调用问题的解决办法
2016/03/10 Javascript
微信小程序多张图片上传功能
2017/06/07 Javascript
微信小程序实现美团菜单
2018/06/06 Javascript
jQuery插件实现弹性运动完整示例
2018/07/07 jQuery
原生js实现针对Dom节点的CRUD操作示例
2019/08/26 Javascript
vue遍历生成的输入框 绑定及修改值示例
2019/10/30 Javascript
Vue使用Proxy代理后仍无法生效的解决
2020/11/13 Javascript
[10:18]2018DOTA2国际邀请赛寻真——Fnatic能否笑到最后?
2018/08/14 DOTA
Python translator使用实例
2008/09/06 Python
Python函数式编程指南(三):迭代器详解
2015/06/24 Python
python多线程之事件Event的使用详解
2018/04/27 Python
python数据预处理 :数据共线性处理详解
2020/02/24 Python
使用Pycharm分段执行代码
2020/04/15 Python
python实现登录与注册系统
2020/11/30 Python
Python爬虫爬取微博热搜保存为 Markdown 文件的源码
2021/02/22 Python
Tostadora意大利:定制T恤
2019/04/08 全球购物
美国知名眼镜网站:Target Optical
2020/04/04 全球购物
在使用非全零作为空指针内部表达的机器上, NULL是如何定义
2014/11/09 面试题
中文系学生自荐信范文
2013/11/13 职场文书
成品仓管员岗位职责
2013/12/11 职场文书
农村婚礼证婚词
2014/01/10 职场文书
我的中国梦演讲稿500字
2014/08/19 职场文书
2014迎国庆标语大全
2014/09/19 职场文书
电信营业员岗位职责
2015/04/14 职场文书
Win11自动黑屏怎么办 Win11自动黑屏设置教程
2022/07/15 数码科技