码迷,mamicode.com
首页 > 编程语言 > 详细

python--traceback模块

时间:2018-06-06 01:08:49      阅读:260      评论:0      收藏:0      [点我收藏+]

标签:打印   返回   int   class   encoding   traceback   orm   bin   使用   

#!/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模块

标签:打印   返回   int   class   encoding   traceback   orm   bin   使用   

原文地址:https://www.cnblogs.com/traditional/p/9142635.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!