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创建关联数组(字典)的方法
May 04 Python
Python的Django框架中URLconf相关的一些技巧整理
Jul 18 Python
Python中列表和元组的使用方法和区别详解
Dec 30 Python
python3调用百度翻译API实现实时翻译
Aug 16 Python
python3实现字符串操作的实例代码
Apr 16 Python
详解python实现交叉验证法与留出法
Jul 11 Python
django的ORM操作 删除和编辑实现详解
Jul 24 Python
如何使用Python发送HTML格式的邮件
Feb 11 Python
python GUI库图形界面开发之PyQt5拖放控件实例详解
Feb 25 Python
python实现快递价格查询系统
Mar 03 Python
python如何对链表操作
Oct 10 Python
Sentry错误日志监控使用方法解析
Nov 12 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
收音机玩机评测 406 篇视频合集
2020/03/11 无线电
供参考的 php 学习提高路线分享
2011/10/23 PHP
PHP中数组合并的两种方法及区别介绍
2012/09/14 PHP
php二维数组排序与默认自然排序的方法介绍
2013/04/27 PHP
解析PHP 使用curl提交json格式数据
2013/06/29 PHP
解析PHP跳出循环的方法以及continue、break、exit的区别介绍
2013/07/01 PHP
PHP内核探索:变量存储与类型使用说明
2014/01/30 PHP
Centos下升级php5.2到php5.4全记录(编译安装)
2015/04/03 PHP
php curl 上传文件代码实例
2015/04/27 PHP
将PHP从5.3.28升级到5.3.29时Nginx出现502错误
2015/05/09 PHP
laravel多条件查询方法(and,or嵌套查询)
2019/10/09 PHP
mysql输出数据赋给js变量报unterminated string literal错误原因
2010/05/22 Javascript
快速学习jQuery插件 Form表单插件使用方法
2015/12/01 Javascript
继续学习javascript闭包
2015/12/03 Javascript
解决URL地址中的中文乱码问题的办法
2017/02/10 Javascript
微信小程序promsie.all和promise顺序执行
2017/10/27 Javascript
基于vue-ssr服务端渲染入门详解
2018/01/08 Javascript
jQuery基于Ajax实现读取XML数据功能示例
2018/05/31 jQuery
微信小程序中如何使用flyio封装网络请求
2019/07/03 Javascript
详解vue-router 动态路由下子页面多页共活的解决方案
2019/12/22 Javascript
vue中js判断长时间不操作界面自动退出登录(推荐)
2020/01/22 Javascript
JavaScript中变量提升和函数提升的详解
2020/08/07 Javascript
Python获取当前时间的方法
2014/01/14 Python
CentOS中使用virtualenv搭建python3环境
2015/06/08 Python
python实现外卖信息管理系统
2018/01/11 Python
Python简单实现控制电脑的方法
2018/01/22 Python
Django admin 实现search_fields精确查询实例
2020/03/30 Python
python 常用日期处理-- datetime 模块的使用
2020/09/02 Python
米兰网婚纱礼服法国网上商店:Milanoo法国
2016/08/20 全球购物
Kent & Curwen:与大卫·贝克汉姆合作
2017/06/13 全球购物
美国电子元器件分销商:Newark element14
2018/01/13 全球购物
教育基金募捐倡议书
2014/05/14 职场文书
离婚协议书怎么写2014
2014/09/30 职场文书
中学教师个人总结
2015/02/10 职场文书
详解python中[-1]、[:-1]、[::-1]、[n::-1]使用方法
2021/04/25 Python
MySQL中的 inner join 和 left join的区别解析(小结果集驱动大结果集)
2023/05/08 MySQL