嗨,有没有办法从抛出异常的地方继续? 例如我有以下伪代码
unique code 1
unique code 2
unique code 3
如果我想忽略任何唯一代码语句的异常,我必须这样做:
try:
#unique code 1
except:
pass
try:
#unique code 2
except:
pass
try:
#unique code 3
except:
pass
但这对我来说并不优雅,而且我一生都不记得上次是如何解决此类问题的......我想要的是类似的东西
try:
unique code 1
unique code 2
unique code 3
except:
continue from last exception raised
更新: 原因:我问这个问题的原因是上面 3 行代码共享相同类型的异常,比如说,从数组中提取信息,在这个特定的场景中,我并不真正关心 value not in 的异常数组。
最佳答案
将每个代码部分包装到一个函数中,然后尝试在 for 循环中调用每个代码部分:
def code1():
#unique code 1
def code2():
#unique code 2
def code3():
#unique code 3
for section in [code1, code2, code3]:
try:
section()
except:
pass
编辑:如果您仍在寻找另一种方法,您可以使用装饰器使每个调用“安全”,购买返回任何错误而不是抛出错误。不确定这是否真的是 Pythonic 或者是一种很好的做事方式,但它是一种方式:
def safe_call(fn):
def wrapper(*args, **kwargs):
try:
return fn(*args, **kwargs)
except Exception as error:
return error
return wrapper
@safe_call
def code1():
#unique code 1
@safe_call
def code2():
#unique code 2
@safe_call
def code3():
#unique code 3
code1()
code2()
code3()
关于Python 从抛出异常的地方继续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11218898/