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

例外を使用するだけです-これは標準的なpythonの方法です: 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# などではありません。例外は、残りのコードと比較して非常に高価であり、コードを非 Pythonic にしているだけです。

于 2012-04-09T09:11:15.523 に答える
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 に答える
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
于 2012-04-09T09:09:32.093 に答える