同时引发两个错误

新手上路,请多包涵

有没有办法通过使用 try 和 except 同时引发两个错误?例如, ValueErrorKeyError

我怎么做?

原文由 JuM 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 472
2 个回答
try :
    pass
except (ValueError,KeyError):
    pass

阅读有关 处理异常 的更多信息

原文由 Ashwini Chaudhary 发布,翻译遵循 CC BY-SA 3.0 许可协议

该问题询问如何 RAISE 多个错误而不捕获多个错误。

严格来说,您不能引发多个异常,但可以引发一个包含多个异常的对象。

 raise Exception(
    [
        Exception("bad"),
        Exception("really bad"),
        Exception("really really bad"),
    ]
)

问题:为什么你会想要这样做?

答案:当您想引发错误但要处理循环直至完成时,在循环中。

例如,当使用 unittest2 进行单元测试时,您可能希望引发异常并继续处理,然后在最后引发所有错误。这样您就可以一次看到所有错误。

 def test_me(self):

    errors = []

    for modulation in self.modulations:
        logging.info('Testing modulation = {modulation}'.format(**locals()))

        self.digitalModulation().set('value', modulation)
        reply = self.getReply()

        try:
            self._test_nodeValue(reply, self.digitalModulation())
        except Exception as e:
            errors.append(e)

    if errors:
        raise Exception(errors)

Python 3.11

从 3.11 开始,您可以使用 ExceptionGroup 引发多个异常。

 raise ExceptionGroup("this was bad",
    [
        Exception("bad"),
        Exception("really bad"),
        Exception("really really bad"),
    ]
)

原文由 shrewmouse 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题