我是靠谱客的博主 任性萝莉,最近开发中收集的这篇文章主要介绍python使用traceback获取异常信息,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

异常处理

  • 捕捉异常可以使用try/except语句
  • try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理
  • try/finally 语句无论是否发生异常都将执行最后的代码

看个例子

try:
    a = 1 / 0
except Exception as e:
    print(e)
finally:
    print('finished!')

输出结果

integer division or modulo by zero
finished!

但实际在运行一个复杂脚本的时候,有些时候程序出错了需要知道是函数哪一行报错,这个时候可以使用traceback定于报错的位置

看个例子

import traceback

try:
    a = 1 / 0
except Exception as e:
    traceback.print_exc()
finally:
    print('finished!')

输出结果

Traceback (most recent call last):
  File "/Users/johnson/PycharmProjects/others/traceback/test1.py", line 4, in <module>
    a = 1 / 0
ZeroDivisionError: integer division or modulo by zero
finished!

通过直接输出程序报错的位置,非常有利于调试程序
当然,traceback还有其他的方法,比较常用的有:

  • format_exc() 返回字符串,即traceback.print_exc()与print traceback.format_exc()效果是一样的
  • print_exc() 则直接给打印出来,接受file参数直接写入到一个文件
    traceback.print_exc(file=open(‘tb.txt’,’w+’)),写入到tb.txt文件去

关于traceback更多的用法,可以参考https://docs.python.org/2/library/traceback.html

用户自定义异常

Python中的raise 关键字用于引发一个异常

b = 1
if b < 2:
    raise Exception('error',b)
print('finished')

输出结果

Traceback (most recent call last):
  File "PycharmProjects/others/traceback/test1.py", line 12, in <module>
    raise Exception('error',b)
Exception: ('error', 1)

需要注意的是使用raise引发异常之后,程序就终止运行了

raise关键字后面是抛出是一个通用的异常类型(Exception),一般来说抛出的异常越详细越好,Python在exceptions模块内建了很多的异常类型
具体的exceptions可以参考https://docs.python.org/2/tutorial/errors.html

最后

以上就是任性萝莉为你收集整理的python使用traceback获取异常信息的全部内容,希望文章能够帮你解决python使用traceback获取异常信息所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部