如何报告异常以供以后使用

时间:2018-07-31 13:06:16

标签: python exception raise

我有一个python文件,其中有两个函数,每个函数都会引发异常。

def f():
    raise e1

def g():
    raise e2

我的问题是,是否可以将这些异常存储在变量中,例如列表[[e1,e2]-,以便控制另一个函数(例如h)中的异常执行顺序?

2 个答案:

答案 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())