Python 调试时如何跳过行抛出异常

Python 调试时如何跳过行抛出异常,python,pycharm,pdb,ipdb,Python,Pycharm,Pdb,Ipdb,在ipdb中到达这一行(通过python-mipdbscript.py调用)后,抛出异常:IndexError 如何继续调试和跳转,而不需要再次达到这一点的开销 如果我跳转到第62行并使用n命令执行下一行,那么它就不起作用。每个n都会继续退出程序 如果不更改程序,则无法执行此操作 调试器跟踪代码执行。如果抛出错误,调试器将继续执行错误处理的程序流。如果错误未由您处理,则会发出崩溃。这是预期的行为,调试器将遵循它 你可以这样做 # process_with_huge_time_overhead(

在ipdb中到达这一行(通过
python-mipdbscript.py调用)后,抛出异常:IndexError

如何继续调试和跳转,而不需要再次达到这一点的开销

如果我跳转到第62行并使用
n
命令执行下一行,那么它就不起作用。每个
n
都会继续退出程序


如果不更改程序,则无法执行此操作


调试器跟踪代码执行。如果抛出错误,调试器将继续执行错误处理的程序流。如果错误未由您处理,则会发出崩溃。这是预期的行为,调试器将遵循它

你可以这样做

# process_with_huge_time_overhead()
list_a = [1,2,3]
print(list_a[3])
# process_with_huge_time_overhead()
new_data = [5,6,7]
list_a += new_data
为什么我们不能跳过使用pdb

是的,我们可以通过更改堆栈帧数据

pdb在任何堆栈帧的上下文中检查任意Python代码。因此,跳过此操作的一种方法是更改堆栈帧数据(间接更改整个逻辑)。最好是处理代码异常

由于您使用的是pycharm,您可以设置值,也可以在pdb中更改值。但不建议这样做(因为这样会更改逻辑)


我想说最好在那里为exception添加代码..如果是exception,那么continuery:do\u something()除了exception:passYeah,这就像我想将script.py中的所有内容逐行传输到python shell一样。。。pythonshell能够运行抛出异常的代码,而不会关闭和丢失当前变量和上下文。这就是我想要的行为!来自VisualStudioC#调试环境,我发现python不具备这种功能,特别是作为脚本语言,令人难以置信。
try: 
    list_a = [1,2,3]
except Exception:
    pass
print(list_a[3])
# process_with_huge_time_overhead()
new_data = [5,6,7]
list_a += new_data