gpt4 book ai didi

python - PyGObject GLib.MainLoop() 和异常

转载 作者:行者123 更新时间:2023-12-05 07:25:54 27 4
gpt4 key购买 nike

我在我的 Python 应用程序中使用 PyGObjectGLib.MainLoop() 并有一个问题。

是否可以处理 loop.run() 中引发的 Python 异常?

例如,我正在使用 GLib.MainContext.invoke_full() 调用一些函数:

import traceback, gi
from gi.repository import GLib

try:
loop = GLib.MainLoop()

def handler(self):
print('handler')
raise Exception('from handler with love')

loop.get_context().invoke_full(GLib.PRIORITY_DEFAULT, handler, None)
loop.run()

except Exception:
print('catched!')

我认为 handler() 应该在 loop.run() 中的某处调用,所以 raise Exception('from handler with love') 应该被 except Exception: 捕获。然而,它不是:

$ python test.py 
handler
Traceback (most recent call last):
File "test.py", line 9, in handler
raise Exception('from handler with love')
Exception: from handler with love

似乎 handler() 在不知何处调用(从 GLibC 代码调用?),但没有被捕获通过 except Exception:.

是否有可能捕获 GLib.MainLoop.run() 中引发的所有 Python 异常?我有许多这样调用的处理程序,所以我必须添加相同的 try: ... 除了 OneException: ... exceptAnotherException: ... 包装器到每个处理程序中。

最佳答案

不,不传播异常。它被捕获并打印出来。 Python 回调中没有异常会导致循环退出。

关于python - PyGObject GLib.MainLoop() 和异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54666827/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com