1

在带有 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

如何显式触发事后调试,类似于“未捕获的异常”复选框,但对于将在早期帧上捕获的异常?

4

0 回答 0