在带有 Python 扩展的 VS.Code 中,我可以打破“未捕获的异常”和“引发的异常”。
但是,如果我不想中断所有异常,只需要在某个函数中未捕获的异常怎么办?(但哪些被 FastAPI 之类的框架在较浅的框架中捕获?)
如果在控制台上调试,当我知道有一个函数有一行导致异常时,我可以将其更改为:
def some_function():
line_causing_some_exception()
对此:
def some_function():
try:
line_causing_some_exception()
except:
import pdb
pdb.post_mortem()
# Let the framework handle the exception as usual:
raise
我什至可以通过使用出色的wdb以图形方式进行调试,而不是依赖于控制台,这对于服务器应用程序非常方便,或者当我不直接启动 python 代码并且无法访问其控制台时:
def some_function():
try:
line_causing_some_exception()
except:
import wdb
wdb.post_mortem()
# Let the framework handle the exception as usual:
raise
在 VS.Code 中,如果我在捕获异常后添加断点,我没有“事后”回溯,只有当前帧:
def some_function():
try:
line_causing_some_exception()
except:
import debugpy
debugpy.breakpoint()
# Let the framework handle the exception as usual:
raise
我找不到与debugpy.post_mortem()
forpdb
和的等价物wdb
。
如何显式触发事后调试,类似于“未捕获的异常”复选框,但对于将在早期帧上捕获的异常?