0

これに似たdjangoコードがいくつかあります(これはpython 2.7.1です)

try:
    a = some_model.objects.get(some_field='foo') #this could except if for some reason it doesn't exist
    method_that_throws_exception()    #it won't reach this if we get a DoesNotExist
except some_model.DoesNotExist:
    #if it doesn't exist create it then try again
    a = some_model.objects.create(....)
    try:
        method_that_throws_exception() #this time lets say another exception is raised by method
        print 'this should not print right?'
    except Exception as e:
        logging.error("error msg here")

問題は、「これは印刷しないでください」という行がまだ印刷されていることです。私はこれに混乱しています。私はおそらく非常に単純なことを見落としているように感じますが、現時点ではいくつかのトンネルビジョンを持っている可能性があります. 前もって感謝します。

更新: また、ネストされた try ブロックを削除しても、例外をスローするメソッドの呼び出しの下に印刷が表示されます。

4

1 に答える 1

2

私はそれを理解しました、メソッドはそれの中にIwが上げていないtryブロックを持っていました。method_that_throws_exception()内の例外ハンドラーにraiseを追加すると、問題が修正されました。

于 2012-06-28T17:01:40.163 に答える