【发布时间】:2020-05-02 12:29:23
【问题描述】:
我在 Python3 如何处理特定异常时遇到了一点问题,应该忽略它,但无论如何都会在执行结束时连同 Traceback 一起打印出来。
具体来说,我使用graph-tool 库来启动一个交互式窗口,如下所示:
graph_tool.draw.interactive_window(self.graphtool_graph, vertex_text=self.v_label, vertex_font_size=6,geometry=(1920, 1080))
如果我关闭打开的窗口在它完成绘制和布置图形本身之前,我的问题就会出现。然后,当我的代码执行完成时,我得到这个打印输出:
Exception ignored in: <bound method GraphWindow.__del__ of <gtk_draw.GraphWindow object at 0x7f221ccf3750 (graph_tool+draw+gtk_draw+GraphWindow at 0x4c662a0)>>
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/graph_tool/draw/gtk_draw.py", line 1183, in __del__
File "/usr/lib/python3/dist-packages/graph_tool/draw/gtk_draw.py", line 375, in cleanup
File "/usr/lib/python3/dist-packages/gi/overrides/__init__.py", line 68, in __get__
TypeError: 'NoneType' object is not callable
这显然不是很好看,尤其是当最终用户与我的项目进行交互时。
我尝试在 try-catch 语句中包含对 draw.interactive_window 的调用,如下所示:
try:
graph_tool.draw.interactive_window(self.graphtool_graph, vertex_text=self.v_label, vertex_font_size=6,
geometry=(1920, 1080))
except TypeError:
# Interactive Window closed before it finished drawing the graph. It would throw an exception that is
# quite ugly to see. Let's ignore it.
return
但我最终遇到了同样的问题。我什至尝试不指定TypeError 异常并使用毯子except,但无济于事。
有谁知道阻止 Python 打印出这个异常的方法?
P.S.:我在 Python 错误跟踪器上找到了这个 issue,这似乎是相关的。在所附的讨论中,这被认为是一个特性™而不是一个错误,但我仍然想了解是否有可能以任何方式阻止这个异常打印,特别是当我明确地试图捕捉它并忽略它时。
【问题讨论】:
标签: python-3.x exception try-catch graph-tool