为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕仙森 2021-04-07 18:09:21
我处于类__init__方法的一些微不足道的重要部分可能引发异常的情况下。在那种情况下,我想显示一条错误消息,但是继续使用实例。一个非常基本的例子:class something(object):    def __init__(self):        do_something_important()        raise IrrelevantException()    def do_something_useful(self):        passtry:    that_thing = something()except IrrelevantException:    print("Something less important failed.")that_thing.do_something_useful()但是,最后一行无效,因为that_thing未定义。奇怪的是,我发誓我以前做过类似的事情,而且效果很好。我什至讨论如何阻止人们使用未完成的实例的方法,因为我发现即使在发生错误的情况下它也会被创建。现在我想使用它,它不起作用。嗯...?!?PS:something是我自己写的,所以我可以掌控一切。
查看完整描述

3 回答

?
慕田峪9158850

TA贡献1794条经验 获得超7个赞

您既不能引发异常,也不能返回值(不会被黑客攻击)。如果这是您控制的所有代码,那么我可以建议以下模式:


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上设置一个错误代码/消息,然后再进行检查即可。


查看完整回答
反对 回复 2021-04-27
  • 3 回答
  • 0 关注
  • 163 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信