Python traceback 获取详细的异常信息

python中用于处理异常栈的模块是traceback模块,它提供了print_exception、format_exception等输出异常栈等常用的工具函数。

应用实例

try:  
    1/0  
except Exception,e:  
    print e

输出结果是

integer division or modulo by zero

只知道是报了这个错,但是却不知道在哪个文件哪个函数哪一行报的错。

使用 traceback 模块

import 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.print_exception()函数的一个简写形式,而它们获取异常相关的数据都是通过sys.exc_info()函数得到的。

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文件中。


本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏软件开发 -- 分享 互助 成长

递归程序设计

 一般定义: 程序调用自身的编程技巧称为递归(recursion)。  递归做为一种算法设计技巧,是指函数/过程/子程序在运行过程中直接或间接调用自身而产生的重...

1777
来自专栏desperate633

我的javascript学习之路_01之js基础2JavaScript对象JavaScript函数JavaScript运算符JavaScript选择语句JavaScript循环语句JavaScript

JavaScript中的对象与java中和其他面向对象语言是基本一致的。如何访问对象,如何访问对象方法,如何新建对象等。都是相当一致的。

884
来自专栏电光石火

PHP从数据库提取并显示数据的典型代码

PHP从数据库提取并显示数据的典型代码如下: if ($res=mysql_query($sql)) { //数据库查询执行成功 ...

1718
来自专栏GreenLeaves

自定义类型转换器之TypeConverter

  C#提供了很多类型转换的方法如ConvertToInt、int.Parse、int.tryParse等等,这些方法都能将一个C#的基本数据类型转换成另一个C...

1927
来自专栏V站

PHP把二维数组中的值取出组合整一维数组

小伙伴们,之前我们在开发过程中肯定遇到需要把二维数组转换为一维数组的时候,基本上都运用了foreach循环遍历赋值给新数组. 今天这里介绍一个新的方法,通过两个...

1452
来自专栏乐百川的学习频道

Python 正则表达式

最近研究Python爬虫,很多地方用到了正则表达式,但是没好好研究,每次都得现查文档。今天就专门看看Python正则表达式。本文参考了官方文档 re模块。 模式...

19710
来自专栏编程

PHP中性能优化之生成器

问题背景 PHP生成器是PHP的5.5.0版本引入的功能,生成器实际上就是简单的迭代器。生成器会根据需求计算产出迭代的值,而标准的PHP迭代器经常在内存中执行迭...

1989
来自专栏码农二狗

一个简单的dao设计

1187
来自专栏WD学习记录

js学习2016-8-16

    当一个函数被保存为对象的一个属性时,我们称它为一个方法。如果调用表达式包含一个提取属性的动作,(即我们讲解对象时所说的.操作符),那么它就被当做一个方法...

591
来自专栏黑白安全

switch语句

多级elseif 显然是用于那些可能需要进行多级判断的情况。如果$a,正好是大于10,只需判断一次,但如果$a小于10那就必须经过“是不是大于10?,是不是等于...

573

扫码关注云+社区