2

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

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

来电者会做这样的事情

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

4 回答 4

3

Just use exceptions - it's the standard python way: http://docs.python.org/tutorial/errors.html

于 2012-04-09T09:07:44.863 回答
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 异常,也就是说,即使您试图避免使用异常,它也是在内部使用的。所以我的回答是,使用异常,这不是 Java、C# 等。与其他代码相比,异常非常昂贵,而且你只是让你的代码不符合 Python 标准。

于 2012-04-09T09:11:15.523 回答
0

You would do just like you did. :) But yeah, handing errors via exception is not exceptional, it is quite common in python, so idiomatically you would want to use exception. But here is your code (bit changed)

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
于 2012-04-09T09:09:32.093 回答
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'

等等。

于 2012-04-09T09:14:12.390 回答