每当发生错误时,我都试图运行一个函数。我不想使用try
或except
,因为我的代码很大,并且发生错误的可能性很大,所以我不能在任何地方都使用try
.. 。这就是我所期望的:
>>> if ValueError: #don't works , just assuming.
print("Hey! You are done.")
>>> int("abc")
Hey! You are done.
>>> int("1b")
Hey! You are done.
>>>
有什么办法吗?
答案 0 :(得分:0)
如果您的代码是一个完整的块,我建议将其分成多个函数。在这里,您可以将每个函数包装在一个装饰器中,该装饰器会出现错误,并在错误时运行一个函数:
def handle_error(error, error_func):
def decorator(func):
def wrapper(*args, **kwargs):
r = None
try:
r = func(*args, **kwargs)
except error as e:
r = error_func()
finally:
return r
return wrapper
return decorator
然后在类似这样的函数上使用:
def bad_value():
print('bad value given!')
@handle_error(ValueError, bad_value)
def multiply(a, b):
return a * b
当然,您可以更加“广泛”,并捕获所有异常...
@handle_error(Exception, error_func)
def func():
# ...
答案 1 :(得分:0)
ValueError由特定的代码段触发,并将在违规语句后立即引发。 int("abc")
会自行引发ValueError,并且程序将在到达任何if ValueError
语句之前停止执行。
您需要一个try
/ except
块,以允许python捕获错误并继续执行。没有一个人,我看不到任何方法来实现您想要的。