Welcome to 徐小波’s blo|

河北大学-徐小波

园龄:2年2个月粉丝:1关注:4

traceback模块

代码:

复制代码
#coding=utf-8

import traceback
import sys

'''
traceback.format_exc():返回格式化的异常信息字符串。
traceback.format_exception():返回异常信息的列表,其中每个元素是格式化的错误消息。
traceback.print_exc():将格式化的异常信息输出到标准错误流(stderr)。
traceback.extract_tb():从 traceback 对象中提取出回溯信息。
traceback.format_tb():格式化 traceback 对象中的回溯信息。
'''

# 一些可能引发异常的代码
def exception_func():
    result = 1 / 0
    return result
    
try:
    exception_func()
except:
    print("============trace信息[extract_stack]:============")
    stack = traceback.extract_stack()
    for item in stack:
        print(f"File: {item[0]},\nLine: {item[1]},\nFunction: {item[2]},\nCode: {item[3]}")
    print()
    
try:
    exception_func()
except:
    print("============trace信息[print_stack]:============")
    traceback.print_stack()  # 打印当前栈帧的追踪信息
    print()

try:
    exception_func()
except:
    print("============trace信息[format_exc]:============")
    trace = traceback.format_exc()
    print(trace)
    print()

try:
    exception_func()
except:
    print("============trace信息[print_exc]:============")
    traceback.print_exc()
    print()
    
try:
    exception_func()
except Exception as e:
    print("============trace信息[print_tb]:============")
    exc_type, exc_value, exc_traceback = sys.exc_info()
    print(f"Exception Type: {exc_type}, Exception Value: {exc_value}")
    traceback.print_tb(exc_traceback)  # 打印堆栈追踪信息但不包括最后的行号(通常是引发异常的行)
    print()
    
try:
    exception_func()
except Exception:
    print("============trace信息[format_exception]:============")
    exc_type, exc_value, exc_traceback = sys.exc_info()
    formatted_exception = traceback.format_exception(exc_type, exc_value, exc_traceback)
    print(''.join(formatted_exception))
    print(exc_type)
    print(exc_value)
    print(exc_traceback)
    print()
    
try:
    exception_func()
except Exception:
    print("============trace信息[extract_tb]:============")
    exc_type, exc_value, exc_traceback = sys.exc_info()
    for frame in traceback.extract_tb(exc_traceback):
        print(frame)
    print()
    
try:
    exception_func()
except Exception:
    print("============trace信息[format_tb]:============")
    exc_type, exc_value, exc_traceback = sys.exc_info()
    formatted_tb = traceback.format_tb(exc_traceback)
    print(formatted_tb)
    print(''.join(formatted_tb))
    print()
复制代码

输出:

复制代码
============trace信息[extract_stack]:============
File: D:\workspace\sixdu_tools\traceback_test.py,
Line: 23,
Function: <module>,
Code: stack = traceback.extract_stack()

============trace信息[print_stack]:============
  File "D:\workspace\sixdu_tools\traceback_test.py", line 32, in <module>
    traceback.print_stack()  # 打印当前栈帧的追踪信息

============trace信息[format_exc]:============
Traceback (most recent call last):
  File "D:\workspace\sixdu_tools\traceback_test.py", line 36, in <module>
    exception_func()
  File "D:\workspace\sixdu_tools\traceback_test.py", line 16, in exception_func
    result = 1 / 0
ZeroDivisionError: division by zero


============trace信息[print_exc]:============

Traceback (most recent call last):
  File "D:\workspace\sixdu_tools\traceback_test.py", line 44, in <module>
    exception_func()
  File "D:\workspace\sixdu_tools\traceback_test.py", line 16, in exception_func
    result = 1 / 0
ZeroDivisionError: division by zero
============trace信息[print_tb]:============
Exception Type: <class 'ZeroDivisionError'>, Exception Value: division by zero
  File "D:\workspace\sixdu_tools\traceback_test.py", line 51, in <module>
    exception_func()
  File "D:\workspace\sixdu_tools\traceback_test.py", line 16, in exception_func
    result = 1 / 0

============trace信息[format_exception]:============
Traceback (most recent call last):
  File "D:\workspace\sixdu_tools\traceback_test.py", line 60, in <module>
    exception_func()
  File "D:\workspace\sixdu_tools\traceback_test.py", line 16, in exception_func
    result = 1 / 0
ZeroDivisionError: division by zero

<class 'ZeroDivisionError'>
division by zero
<traceback object at 0x0000020DC0CFD600>

============trace信息[extract_tb]:============
<FrameSummary file D:\workspace\sixdu_tools\traceback_test.py, line 72 in <module>>
<FrameSummary file D:\workspace\sixdu_tools\traceback_test.py, line 16 in exception_func>

============trace信息[format_tb]:============
['  File "D:\\workspace\\sixdu_tools\\traceback_test.py", line 81, in <module>\n    exception_func()\n', '  File "D:\\workspace\\sixdu_tools\\traceback_test.py", line 16, in exception_func\n    result = 1 / 0\n']
  File "D:\workspace\sixdu_tools\traceback_test.py", line 81, in <module>
    exception_func()
  File "D:\workspace\sixdu_tools\traceback_test.py", line 16, in exception_func
    result = 1 / 0
复制代码

 

posted @   河北大学-徐小波  阅读(6)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起