Python プログラムの終了時にタスクを実行したいのですが、それは正常に終了した場合のみです。私の知る限り、atexit モジュールを使用すると、成功したかどうかに関係なく、プログラムの終了時に登録済みの関数が常に実行されます。成功した終了時にのみ実行されるように関数を登録する同様の機能はありますか? または、終了関数が終了が正常か例外かを検出する方法はありますか?
問題を示すコードを次に示します。プログラムが失敗した場合でも、プログラムが成功したことが出力されます。
import atexit
def myexitfunc():
print "Program succeeded!"
atexit.register(myexitfunc)
raise Exception("Program failed!")
出力:
$ python atexittest.py
Traceback (most recent call last):
File "atexittest.py", line 8, in <module>
raise Exception("Program failed!")
Exception: Program failed!
Program succeeded!