python--traceback模块

Posted traditional

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python--traceback模块相关的知识,希望对你有一定的参考价值。

#!/usr/bin/env python
# -*- coding:utf-8 -*- 
# author:love_cat

# 异常处理在python中已经屡见不鲜了,我们不仅可以处理异常,也可以将异常打印出来.

try:
    print(a)  # 显然a没有被定义
except Exception as e:
    print(e)

# 程序的输出结果如下
‘‘‘
name ‘a‘ is not defined
‘‘‘
# 但仅仅如此,我们却不知道程序在什么地方报的错
# 当我们不使用try语句时,解释器会给我们报出很详细的错误,但此时程序也崩溃了
# 如何在保证程序不崩溃的前提下,获取详细的错误信息呢?
# 这时候,可以使用traceback模块下的方法
import traceback
try:
    print(a)  # a依旧没有被定义
except Exception as e:
    traceback.print_exc()
print(古明地盆)
# 程序输出结果如下
‘‘‘
Traceback (most recent call last):
  File "F:/satori/python--traceback/异常处理.py", line 22, in <module>
    print(a)  # a依旧没有被定义
NameError: name ‘a‘ is not defined
古明地盆
‘‘‘
# 可以看出来这和程序崩溃时,解释器报出的错误是一致的,但我们下面的字符串还是被打印了出来
# 除了traceback.print_exc()之外,还可以使用traceback.format_exc()
# 区别是traceback.print_exc()报出的错误的形式跟程序崩溃时一模一样,连字体颜色也是红色,咋一看会真的以为程序报错
# 但traceback.format_exc()则是以字符串的形式返回,但需要加上print
try:
    print(a)  # a依旧没有被定义
except Exception as e:
    print(traceback.format_exc())
# 程序输出结果如下
‘‘‘
Traceback (most recent call last):
  File "F:/satori/python--traceback/异常处理.py", line 39, in <module>
    print(a)  # a依旧没有被定义
NameError: name ‘a‘ is not defined
‘‘‘
# 虽然看起来和上面没有区别,但后者是以字符串返回的,没有红红的字体。
# 此外traceback.print_exc()还可以将错误信息写到文件当中
try:
    print(a)  # a依旧没有被定义
except Exception as e:
    traceback.print_exc(file=open(traceback.txt,w,encoding=utf-8))
# 可以看到新出现了traceback.txt文件,打开文件可以看到如下信息
‘‘‘
Traceback (most recent call last):
  File "F:/satori/python--traceback/异常处理.py", line 52, in <module>
    print(a)  # a依旧没有被定义
NameError: name ‘a‘ is not defined
‘‘‘

 

以上是关于python--traceback模块的主要内容,如果未能解决你的问题,请参考以下文章

python traceback

如何使用模块化代码片段中的LeakCanary检测内存泄漏?

python traceback学习(转)

如何有条件地将 C 代码片段编译到我的 Perl 模块?

python traceback

CTS测试CtsWindowManagerDeviceTestCases模块的testShowWhenLockedImeActivityAndShowSoftInput测试fail项解决方法(代码片段