我有一个python文件,其中有两个函数,每个函数都会引发异常。
def f():
raise e1
def g():
raise e2
我的问题是,是否可以将这些异常存储在变量中,例如列表[[e1,e2]-,以便控制另一个函数(例如h)中的异常执行顺序?
答案 0 :(得分:11)
异常是对象,就像Python中的大多数事物一样;具体来说,您可以在捕获名称时将其绑定到名称,然后将其添加到列表中。例如:
ChopraChap7SeasonalFactorsCalculator
我不确定要存储异常以供以后查看时要记住的用例。通常,您在捕获到异常后立即采取行动。
答案 1 :(得分:1)
chepner指出,异常是对象。如果以后要按相同顺序(甚至可能是不同的线程)处理它们,则应将它们存储在队列中:
import Queue
exceptions = Queue.Queue()
try:
f()
except Exception as e:
exceptions.put(e)
然后,您可以让另一个线程访问相同的变量exceptions
并处理(或记录)它们:
while True:
while not exceptions.empty():
do_sth_with_exception(exceptions.get())