在try-except内部的map()内部引发异常,不是由try-except处理的

时间:2017-10-09 16:43:23

标签: python python-3.x

任何人都能理解如何处理map()中的错误?我希望能够在没有程序崩溃的情况下处理这种错误。

def add_one(val):
    raise Exception('My error!')
    return val+1

values = [1,2,3,4]

# Does not work
try:
    new_values = map(add_one, values)
except:
    new_values = []
print(list(new_values)) # Raises an Exception: My error!

# Works
try:
    new_values = []
    for x in values:
        new_values.append(add_one(x))
except:
    new_values = []
print(new_values) # Returns []

1 个答案:

答案 0 :(得分:1)

map是懒惰的 - 在必要之前它实际上并没有消耗数据。

因此,您提供的两个例子并不相同。