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爬取三国演义的实现方法
Sep 12 Python
Python线程池模块ThreadPoolExecutor用法分析
Dec 28 Python
详解python函数的闭包问题(内部函数与外部函数详述)
May 17 Python
Python OpenCV之图片缩放的实现(cv2.resize)
Jun 28 Python
anaconda中更改python版本的方法步骤
Jul 14 Python
keras用auc做metrics以及早停实例
Jul 02 Python
python 实现表情识别
Nov 21 Python
在 Golang 中实现 Cache::remember 方法详解
Mar 30 Python
基于python制作简易版学生信息管理系统
Apr 20 Python
Python matplotlib绘制条形统计图 处理多个实验多组观测值
Apr 21 Python
python可视化分析绘制带趋势线的散点图和边缘直方图
Jun 25 Python
python数字图像处理之图像的批量处理
Jun 28 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
SONY SRF-M100的电路分析
2021/03/02 无线电
使用PHP实现蜘蛛访问日志统计
2013/07/05 PHP
PHP利用str_replace防注入的方法
2013/11/10 PHP
PHP实现json_decode不转义中文的方法
2017/05/20 PHP
在chrome中window.onload事件的一些问题
2010/03/01 Javascript
jQuery学习笔记之jQuery的DOM操作
2010/12/22 Javascript
jquery仿京东导航/仿淘宝商城左侧分类导航下拉菜单效果
2013/04/24 Javascript
jquery默认校验规则整理
2014/03/24 Javascript
JS选中checkbox后获取table内一行TD所有数据的方法
2015/07/01 Javascript
AngularJS教程之MVC体系结构详解
2016/08/16 Javascript
表单input项使用label同时引用Bootstrap库导致input点击效果区增大问题
2016/10/11 Javascript
JS扩展类,克隆对象与混合类实例分析
2016/11/26 Javascript
bootstrap下拉菜单使用方法解析
2017/01/13 Javascript
Bootstrap 3 进度条的实现
2017/02/22 Javascript
js按条件生成随机json:randomjson实现方法
2017/04/07 Javascript
JS实现加载时锁定HTML页面元素的方法
2017/06/24 Javascript
Vue.js表单标签中的单选按钮、复选按钮和下拉列表的取值问题
2017/11/22 Javascript
bootstrap模态框关闭后清除模态框的数据方法
2018/08/10 Javascript
vue实现可视化可拖放的自定义表单的示例代码
2019/03/20 Javascript
Node.js API详解之 readline模块用法详解
2020/05/22 Javascript
基于vue 动态菜单 刷新空白问题的解决
2020/08/06 Javascript
uniapp开发小程序实现滑动页面控制元素的显示和隐藏效果
2020/12/10 Javascript
python抓取百度首页的方法
2015/05/19 Python
Python 常用模块 re 使用方法详解
2019/06/06 Python
python用TensorFlow做图像识别的实现
2020/04/21 Python
css3 给页面加个半圆形导航条主要利用旋转和倾斜样式
2014/02/10 HTML / CSS
CSS3实现头像旋转效果
2017/03/13 HTML / CSS
HTML5中图片之间的缝隙完美解决方法
2017/07/07 HTML / CSS
巴西备受欢迎的服装和生活方式品牌:FARM Rio
2020/02/04 全球购物
PHP两种查询函数array/row的区别
2013/06/03 面试题
学校大课间活动方案
2014/01/30 职场文书
毕业生就业协议书
2014/04/11 职场文书
2014年酒店年度工作总结
2014/12/10 职场文书
优秀学生主要事迹怎么写
2015/11/04 职场文书
用 Python 定义 Schema 并生成 Parquet 文件详情
2021/09/25 Python
vue实力踩坑之push当前页无效
2022/04/10 Vue.js