使用一个对象,即使__init __()引发异常?

我处于类__init__方法的一些微不足道的重要部分可能引发异常的情况下。在那种情况下,我想显示一条错误消息,但是继续使用实例。


一个非常基本的例子:


class something(object):

    def __init__(self):

        do_something_important()

        raise IrrelevantException()


    def do_something_useful(self):

        pass


try:

    that_thing = something()

except IrrelevantException:

    print("Something less important failed.")


that_thing.do_something_useful()

但是,最后一行无效,因为that_thing未定义。奇怪的是,我发誓我以前做过类似的事情,而且效果很好。我什至讨论如何阻止人们使用未完成的实例的方法,因为我发现即使在发生错误的情况下它也会被创建。现在我想使用它,它不起作用。嗯...?!?


PS:something是我自己写的,所以我可以掌控一切。


慕仙森
浏览 164回答 3
3回答

慕田峪9158850

您既不能引发异常,也不能返回值(不会被黑客攻击)。如果这是您控制的所有代码,那么我可以建议以下模式:class something(object):   Exception = None   def __init__(self):      ...      if BadStuff:         self.Exception = IrrelevantException()      ...that_thing = something()if that_thing.Exception:   print(that_thing.Exception)# carry on请注意,如果您只是在寻找一条消息,那么就不必费心创建一个Exception对象,而只需在self上设置一个错误代码/消息,然后再进行检查即可。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python