2014-10-10 4 views
-4

내 코드를 같이 잡은 할 수 없습니다파이썬 기능 예외가

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

내가 매개 변수로 함수를 전달하는 기능을 쓰고 싶어하지만, retry 기능, 그것은 항상 함수에서 예외를 잡을 수없는 .에

+2

정확히 무엇을하려고합니까? 여기에 당신의 유스 케이스는 무엇입니까? –

답변

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/에서 논의 된 내용이 도움이 될 수 있습니다.