有关异常处理的建议

时间:2014-03-26 23:00:41

标签: python exception-handling

我想知道是否可以将异常捕获到列表中(存储错误),继续通过for item in list直到所有项都被迭代,然后对错误进行排序并打印唯一的错误? / p>

希望这是有道理的。这是一个函数的简单示例,试图说明我的意思:

def function1(list1, list2)
    for item in list1:
        for item in list2:
            try:
                do stuff here #iterates both lists
            except:
                capture exception append to list
                errors = sort(exceptions)
    print unique exceptions

1 个答案:

答案 0 :(得分:-2)

易于收集且不易过滤

class SetForFilter(set):
     def add(self,x):
         if x in self:
             return False
         else:
             super(SetForFilter,self).add(x)
             return True


def function1(list1, list2):
    errors = []
    for item in list1:
        for item in list2:
            try:
                do stuff here #iterates both lists
            except Exception as e:
                errors.append(e)

    types = SetForTFilter()
    unique = filter( lambda x: types.add(type(x)), errors)
    for e in unique: print repr(e)

首先创建用于存储错误的列表。 python中的所有异常都应该基于内置的Exception类,因此except Exception意味着捕获所有异常。 as e表示异常将存储在e变量中。将e附加到错误中我会收集所有错误。

所有例外都是独一无二的。也许您想要捕获唯一的异常类型?

types = SetForFilter()已设置(仅接受唯一对象)如果添加则返回True,否则返回False。