如何在python的一个块中编写多个try语句?
发布于 2021-01-29 17:23:25
我想要做:
try:
do()
except:
do2()
except:
do3()
except:
do4()
如果do()失败,则执行do2(),如果do2()也失败,则执行do3(),依此类推。
最好的祝福
关注者
0
被浏览
164
1 个回答
-
我
first()
为此编写了一个快速包装函数。用法 :
value = first([f1, f2, f3, ..., fn], default='All failed')
#!/usr/bin/env def first(flist, default=None): """ Try each function in `flist` until one does not throw an exception, and return the return value of that function. If all functions throw exceptions, return `default` Args: flist - list of functions to try default - value to return if all functions fail Returns: return value of first function that does not throw exception, or `default` if all throw exceptions. TODO: Also accept a list of (f, (exceptions)) tuples, where f is the function as above and (exceptions) is a tuple of exceptions that f should expect. This allows you to still re-raise unexpected exceptions. """ for f in flist: try: return f() except: continue else: return default # Testing. def f(): raise TypeError def g(): raise IndexError def h(): return 1 # We skip two exception-throwing functions and return value of the last. assert first([f, g, h]) == 1 assert first([f, g, f], default='monty') == 'monty'