2
map()内でエラーを処理する方法を理解していますか?プログラムがクラッシュすることなく、この種のエラーを処理できるようにしたいと思います。try-exceptで処理されないtry-expect内の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 []
もっと明示的に、 'add_one'は' map'によって返されたイテラブルから最初のアイテムを*取得するまで実際には呼び出されません。 – chepner
[OK]を、マップ部分のエラーを処理する方法はできますか? 2番目の例は、機能が適切に機能していることを確認するための自分の正気のためです。私はそれが必要ではないと思う。 –
ああああああああ@私はそれを呼び出すまでジェネレータが何かを評価しないことを忘れていた!ありがとう!私が最後にそれを評価しようとしたときに、try-expectの外側にエラーを投げていました。 –