0

我正在尝试使用我的自定义 gobject 类之一中的属性在 python3 / pygobject 中进行一些异常处理。我的代码是这样的

try:
    label = foo.label # This is a GObject.Property
except Exception:
    label = "fallback"

我注意到,在试图找出问题后,解释器从来没有绕过 except 块,我想出了这个测试用例

from gi.repository import Gtk, GObject

class foo(GObject.Object):
    @GObject.Property
    def bar(self):
        raise NotImplementedError

fish = foo()
print("Bar: ", fish.bar)

输出

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/gi/_gobject/propertyhelper.py", line 403, in obj_get_property
    return prop.fget(self)
  File "test.py", line 6, in bar
    raise NotImplementedError
NotImplementedError
Bar: None

如您所见,即使出现异常,属性也会返回None并且程序会继续。

我也不明白。

任何人都知道解决方法或解决方案吗?

4

1 回答 1

1

GObject 属性不支持异常,因此异常在这里不起作用是可以理解的。解决方法是使用 getter/setter 方法。

于 2013-10-28T18:45:08.530 回答