在PyCharm下调试wxPython应用程序会导致在每个未处理的异常上终止

问题描述 投票:0回答:1

在wxPython下,当主循环中出现未处理的异常时,将打印回溯并忽略该异常。在PyCharm下进行调试时并非如此。然后,未处理的异常导致流程终止。另外,这是新行为,因为以前版本的PyCharm并非如此。

采用以下测试代码:

import wx
import wx.lib.sized_controls as sc

def Raise(evt=None):
    raise Exception('error')

app = wx.App()
frame = sc.SizedFrame(None,-1,'hello')
p = frame.GetContentsPane()
b = wx.Button(p,-1,'press')
frame.Bind(wx.EVT_BUTTON,Raise,b)
frame.Show()
app.MainLoop()

运行此按钮时通常会导致打印并忽略异常。在PyCharm调试模式下运行时,过程终止。有没有办法改变这种行为?

Windows10,Python3.6,wxPython 4.0.4,PyCharm 2019.3

python debugging pycharm wxpython
1个回答
0
投票

[与大多数Python调试器一样,PyCharm将其自己的异常处理程序安装为sys.excepthook,因此,只要正常运行与调试器运行之间有不同的行为,就可以开始查找。例如,如果您查看项目的断点列表,还将看到用于打破异常的选项。这些东西在新的excepthoot函数中实现。如果所有其他方法均失败,则可以查看PyCharm用于启动调试对象并与被调试对象通信的pydev代码,并查看它在与异常挂钩相关的代码中的工作情况,这可能会提供一些有关如何解决此问题的线索。

我不再使用它了,所以我可能会记错了,但是我似乎想起来,PyCharm中有一个选项可以停止或忽略未处理的异常,或者忽略从特定位置引发的异常,但是我'现在都没有看到它们。

OTOH,在事件处理程序或其他回调函数结束之前捕获异常总是一个好主意。

© www.soinside.com 2019 - 2024. All rights reserved.