如何引发具有多种原因的python异常,类似于Java的addSuppressed()特性?例如,我有一个要尝试的多个方法的列表,如果它们都不起作用,我想引发一个异常,其中包括所有尝试过的方法的异常。即:
exceptions = []
for method in methods_to_try:
try:
method()
except Exception as e:
exceptions.append(e)
if exceptions:
raise Exception("All methods failed") from exceptions
但是这段代码失败了,因为raise ... from ...
语句只需要一个异常,而不是一个列表。Python2或3解决方案是可以接受的。必须保留所有回溯和异常消息。你知道吗
改用日志记录
如果使用日志模块对您来说是可以接受的,我想记录捕获的单个异常并只引发一个整体异常是最干净的。你知道吗
如果您只想在所有尝试过的函数都出错的情况下输出日志消息,那么这是来自logging cookbook的缓冲记录器的理想情况 您可以将其修改为始终在调试级别进行日志记录,但如果所有子函数都引发错误,则将级别提升为错误。你知道吗
创建最后一个异常时,只需将异常作为参数传递。你知道吗
它们将在
args
属性中可用。你知道吗相关问题 更多 >
编程相关推荐