有没有办法通过使用 try 和 except 同时引发两个错误?例如, ValueError
和 KeyError
。
我怎么做?
原文由 JuM 发布,翻译遵循 CC BY-SA 4.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 许可协议
2 回答5.2k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
2 回答849 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
阅读有关 处理异常 的更多信息