相关函数简介

sys.exc_info()

返回包含3个元素(type, value, traceback)的元组,提供关于当前正被处理的异常信息。如果异常没有被处理,返回包含3个None值的元组。

type:存放异常类型(类对象);

Value:获取异常参数(关联的值,或者需要抛出的第二个参数--总是异常类型是个类对象,那该参数总是一个异常类实例)(its associated value or the second argument to raise, which is always a class instance if the exception type is a class object);

traceback:获取traceback对象,记录异常发生点(根源)。

注意:把traceback值赋值给正在处理当前异常的函数中的本地变量,会引发循环引用问题,会影响垃圾回收。用完后需要删除。

参考连接:

traceback.extract_stack()

从stack frame提取原始的traceback

参考连接:

代码演示

#!/usr/bin/env python

# -*- coding:utf-8 -*-

__author__ = 'shouke'

import sys

import traceback

def testfn():

# 定义异常信息模版

traceback_template = '''Traceback (most recent call last):

File "%(filename)s", line %(lineno)s, in %(name)s

%(type)s: %(message)s\n'''

try:

var = 5

assert var >0, 'var is larger than zero'

assert var % 2 == 0, 'var is not an even number'

except AssertionError:

exc_type, exc_value, exc_traceback = sys.exc_info()

print('异常类型:', exc_type)

print('关联的值,或者需要raise的第二个参数:', exc_value)

print('异常发生点(根源):', exc_traceback)

print('--------------------------')

traceback_details = {

'filename': exc_traceback.tb_frame.f_code.co_filename, #文件名

'lineno' : exc_traceback.tb_lineno, # 发生异常的行数

'name' : exc_traceback.tb_frame.f_code.co_name, # 所在函数

'type' : exc_type.__name__, # 异常类型

'message' : exc_value

}

traceback_info = traceback_template % traceback_details

print(traceback_info)

print('--------------------------')

raw_traceback = traceback.extract_stack()

print(raw_traceback)

finally: # 为避免垃圾回收问题需要删除

del (exc_type, exc_value, exc_traceback)

testfn()

运行结果

"D:\Program Files\python33\python.exe" E:/Projects/interface_project_for_dev/teststudy.py

异常类型:

关联的值,或者需要raise的第二个参数: var is not an even number

异常发生点(根源):

--------------------------

Traceback (most recent call last):

File "E:/Projects/interface_project_for_dev/teststudy.py", line 17, in testfn

AssertionError: var is not an even number

--------------------------

[('E:/Projects/interface_project_for_dev/teststudy.py', 44, '', 'testfn()'), ('E:/Projects/interface_project_for_dev/teststudy.py', 39, 'testfn', 'raw_traceback = traceback.extract_stack()')]

Process finished with exit code 0

python traceback_Python 捕捉traceback异常栈信息相关推荐

  1. python traceback_Python语言Traceback详解

    本文主要向大家介绍了Python语言Traceback详解,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 刚接触Python的时候,简单的异常处理已经可以帮助我们解决大多数问题, ...

  2. 铁道部12306后台技术框架 完整异常栈信息以及技术缺点和漏洞

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 铁道部旗 ...

  3. 铁道部12306后台技术框架、完整异常栈信息以及技术缺点和漏洞

    铁道部旗下在线购票网站12306自诞生起就一直为人所诟病,网站经常崩溃.UI粗糙.漏洞满框,但这都不是什么新闻了,近日网友爆出12306的技术框架及其表结构,大家可以来一览究竟. 下图是爆出的SQL语 ...

  4. python 死循环捕捉输入异常

    死循环即无法靠自身控制终止的循环.死循环并非一无是处,while True or while 1是死循环的普遍用法,死循环一直执行等待程序中断,然后去处理中断程序. 举例1 while True: t ...

  5. log日志中不打印异常栈的具体信息

    问题与分析 最近在查项目的log时发现报了大量的NPE(NullPointerException),诡异的是只log了Exception的类名,却没有具体的堆栈信息,以致于无法对该NPE异常进行准确定 ...

  6. 好程序员Python培训分享Traceback具体使用方法

    好程序员Python培训分享Traceback具体使用方法详解,首先在之前做Java的时候,异常对象默认就包含stacktrace相关的信息,通过异常对象的相关方法printStackTrace()和 ...

  7. Java中的异常栈轨迹和异常链

    Java中允许对异常进行再次抛出,以提交给上一层进行处理,最为明显的例子为Java的常规异常. 常规异常:有Java所定义的异常,不需要异常声明,在未被try-catch的情况下,会被默认上报到mai ...

  8. python Intel Real Sense D435 异常检测与抛出(获取/打印异常详细信息 traceback.print_exc())

    文章目录 背景描述 首先熟悉一下python异常处理的几个关键字 摄像头USB断开异常 获取异常详细信息 背景描述 在摄像头运行的时候,有时候会遇到一些错误,比如帧传输错误引起的程序结束, 但更为严重 ...

  9. Python的try... excep异常捕捉机制

    Python的try... excep异常捕捉机制 一.没有加入异常捕捉机制 二.加入try ... except 异常捕捉 1.已知错误类型 (例如下面已知列表索引错误类型`IndexError`) ...

最新文章

  1. 一步一步学习C#(一)
  2. alibaba cloud 打包_阿里也上VS Code船了,发布Alibaba Cloud Toolkit插件
  3. Python_time模块
  4. MapReduce 计数器简介(转载自:http://www.tuicool.com/articles/qqyIBr)
  5. spark.mllib:Optimizer
  6. Marketing Cloud里Odata请求响应结构的解析
  7. php适用于什么服务器,php – 找不到laravel类(适用于localhost但不适用于DO服务器)...
  8. Redis配置和常用命令
  9. 你不知道的BAT大数据面试题
  10. excel保存时 检测到错误,Microsoft Excel可通过删除或修复某些功能来保存此文件
  11. 【转贴】蚂蚁和大象的恩怨
  12. java 参数类型转换_java – 如何从通配符类型转换为参数化类型?
  13. Wysistat与Webtrends比较
  14. Detours使用方法,简单明了
  15. 清理所有的java注册表_一些陈旧的注册表垃圾清理脚本:注册表冗余数据清理.reg...
  16. linux中 ~ / ./分别表示什么目录
  17. java9新特性-4-模块化系统: Jigsaw与Modularity
  18. 将xlsx文件转换成CSV文件方法
  19. 合并高德、飞猪重组本地生活,阿里还没放弃与美团的正面battle?
  20. 多张JPG如何合并成一个PDF文档

热门文章

  1. WinForm程序中,如何改变splitcontainer的Panel1的大小?
  2. 汇编语言(一)- 寄存器的作用
  3. 主成分分析和因子分析的介绍、区别和联系
  4. 低成本搭建一台 Unraid 家庭存储服务器:中篇
  5. Matlab中continue语句
  6. 使用delphi+intraweb进行微信开发4—微信消息加解密
  7. 网页视频播放器代码大全 + 21个为您的站点和博客提供的免费视频播放器
  8. 专升本英语——语法知识——基础语法——第五节 冠词和数词【学习笔记】
  9. 国人近视手术白皮书重磅发布,过去两年近视手术量增长近75%
  10. 人生第一篇博客——小试牛刀