2012-04-09 63 views
2

我对Python很陌生。 我想知道如何在不使用异常的情况下实现简单的错误处理,有时(我认为)是过度的。 我想出了一个模式,但我不知道这是否是Python的方式:Python,简单的错误处理模式

def someFunct(someArgs): 
    # do stuff... 
    if error: 
     return False, 'error message' 
    return True,None 

,主叫方会做这样的事

success,errMsg = someFunct(myAwesomeArgs) 
if success: 
    # yey! 
else: 
    # handle error 
+0

感谢您的答案。总结:Python中的异常并不昂贵(是的,我来自Java)。 – Pedru 2012-04-09 09:21:02

+1

如果您让代码更复杂以避免出现异常,出于对性能的真正关注,您可能不应该首先使用Python ......也就是说,关于性能的非常大的关注并非真正的真正:) – 2012-04-09 10:19:48

+0

我相信在python中使用异常是规则,而不是...异常 – 2015-09-30 19:16:53

回答

0

你会像你一样做。 :)但是,通过异常处理错误并不例外,它在python中很常见,所以你会习惯性地使用异常。但这里是你的代码(位已更改)

def somefunc(*args): 

    # do stuff, return -1 on eror 
    error_value = do_suff() 
    if error_value == -1: 
      return True, "error message" 
    else: 
      return False, None 

success, err = somefunc(1,2) 

if success: 
    # yay! 
else: 
    # handle error 
3

在python中使用异常并不是过分夸张。在python异常在几个地方用来控制应用程序的流程,例如,让成像您在使用模式下面的方法:

def some_function(*args): 
    """Do stuff using a loop.""" 

    for i in [1, 2, 3, 4]: 
     print i 

    return True, None 

在那里,已经有一个例外,这是StopIteration exception,也就是说,即使您试图避免使用内部使用的异常,也是如此。所以我的答案是,使用异常,这不是Java,C#等等。与其他代码相比,异常是非常昂贵的,并且您只是让代码变得无懈可击。

0
def someFunct(someArgs): 
    try: 
    # do stuff... 
    return True,None 
    except: 
     return False, 'error message' 

,如果你知道错误可能提出你可以使用:

except errorType1: 
     return False, 'very bad' 
    except errorType2: 
     return False, 'very very bad' 
    except errorType3: 
     return False, 'the computer is dead. get a new one' 

等。