如何阻止Python打印出其他库中忽略的异常?

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

[我在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,这似乎与之相关。在所附的讨论中,它被构造为Feature™,而不是Bug,但是我仍然想了解是否有可能以任何方式阻止打印此Exception,特别是当我明确尝试捕获它并忽略它时。

我在Python3如何处理特定异常方面存在一些问题,应将其忽略,但是无论如何在执行结束时将其与Traceback一起打印出来。具体来说,...

python-3.x exception try-catch graph-tool
1个回答
0
投票

您的问题来自__del__方法调用中发生的异常。作为documented here

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