python之traceback打印异常详细信息

概述

在使用try...except语句时,当抛出异常时,只打印异常信息,而没有标明 哪个文件 哪一行 抛出异常

如:

try:
    1/0
except Exception as e:
    print(e)

执行显示如下:

division by zero

不用try...except... 执行时,显示信息更加详细:

1/0

执行显示如下:

Traceback (most recent call last):
  File "c:/1.py", line 4, in <module>
    1/0
ZeroDivisionError: division by zero

traceback 模块

traceback 模块 可以在try...except...中显示 异常 详细信息

官方api文档:
https://docs.python.org/3.6/library/traceback.html

方法1

打印异常的详细信息,与 不用try...except... 效果相同

traceback.print_exc(file=None)
参数说明

file:可以将异常信息写入到文件中

例子
import traceback
try:
    1/0
except Exception as e:
    traceback.print_exc()

执行显示如下:

Traceback (most recent call last):
  File "c:/1.py", line 4, in <module>
    1/0
ZeroDivisionError: division by zero

注意:
在jupyter notebook中不要使用,否则会 终止运算

方法2

将 异常的详细信息 作为 字符串 返回

traceback.format_exc()
返回值

str类型,异常的详细信息

例子
import traceback
try:
    1/0
except Exception as e:
    print('异常信息:',traceback.format_exc())

执行显示如下:

异常信息: Traceback (most recent call last):
  File "c:/1.py", line 4, in <module>
    1/0
ZeroDivisionError: division by zero

感谢:
https://blog.csdn.net/handsomekang/article/details/9373035


原文出处:/show_1EF3tg1cNKtA.html