2017-12-04 16 views
0

これを処理する最善の方法は何ですか?私はファイルを作成してデータベースにレコードを追加したいが、いずれかが失敗した場合は、もう一方を元に戻したい。最初のタスクを元に戻すのを処理するのを除いて、2回目に失敗した場合を除いて、別のtryを使用して試してみるのが面倒です。試しを使用して2つの依存するタスクを処理するPythonエラー

try: 
    open and write file 
except: 
    pass 
else: 
    try: 
     add record to db 
    except: 
     delete file 

答えて

0

/除いては十分です:

try: 
    open and write file 
    try: 
     add record to db 
    except: 
     delete file 
except: 
    pass 
0

あなたは、あなたがやってみたかったと述べたと、コードが何をするのか異なる場合があります。 open and write fileの実装によっては、削除されていないファイルが残っている可能性があります。


ソリューション

「フラットは、ネストされたよりも優れている」 - Pythonの

の禅
try: 
    open and write file 
    add record to db 
except: 
    delete file 
    rollback database session 

あなたはさらに一歩それを取ると、あなたのように使用できるコンテキストマネージャを作成することができます次のとおりです。

with record() as rec: 
    open and write record to file 
    add record to db 
関連する問題