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
本文来自博客园,作者:河北大学-徐小波,转载请注明原文链接:https://www.cnblogs.com/xuxiaobo/p/18692139

【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步