2014-10-10 51 views
-4

我这样的代码:蟒蛇功能异常不能被捕获

def retry(func, *args): 
    try: 
     func(*args) 
    except: 
     print "" 

我想编写一个函数来传递一个函数作为参数,但在retry功能,它始终不能赶上在功能除外,它在

+2

你究竟想要做什么?你在这里的用例是什么? – 2014-10-10 06:55:12

回答

0

传递你为什么不只是写这样的:

try: 
    func(*args) 
except: 
    print "" 

我敢肯定,它可以捕获所有异常。

0
def retry(func, *args): 
    try: func(*args) 
    except SyntaxError: print "" 
0

如果只是打印一个空字符串,如何知道是否输入了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/讨论的东西可能适合你。