我这样的代码:蟒蛇功能异常不能被捕获
def retry(func, *args):
try:
func(*args)
except:
print ""
我想编写一个函数来传递一个函数作为参数,但在retry
功能,它始终不能赶上在功能除外,它在
我这样的代码:蟒蛇功能异常不能被捕获
def retry(func, *args):
try:
func(*args)
except:
print ""
我想编写一个函数来传递一个函数作为参数,但在retry
功能,它始终不能赶上在功能除外,它在
传递你为什么不只是写这样的:
try:
func(*args)
except:
print ""
我敢肯定,它可以捕获所有异常。
def retry(func, *args):
try: func(*args)
except SyntaxError: print ""
如果只是打印一个空字符串,如何知道是否输入了except子句?试试这个:
def exception_raising_function(a, b, c):
print "exception_raising_function(): got args a = {!r}, b = {!r}, c = {!r}".format(a, b, c)
return 1/0 # raises ZeroDivisionError
def retry(func, *args):
try:
return func(*args)
except Exception as exc:
print "retry(): got exception %s" % exc
>>> retry(exception_raising_function, 1, 2, 'three')
exception_raising_function(): got args a = 1, b = 2, c = 'three'
retry(): got exception integer division or modulo by zero
这样的工作,我们知道它的工作原理,因为有一些输出来证明它。
您似乎想要实现一个重试函数,该函数在出现异常(即“可重试”异常)时重试调用函数。你可以使用装饰器来做到这一点,在http://www.saltycrane.com/blog/2009/11/trying-out-retry-decorator-python/讨论的东西可能适合你。
你究竟想要做什么?你在这里的用例是什么? – 2014-10-10 06:55:12