どのようにスキップsys.exitfuncが独自のレンダリングメカニズム例外が発生する
質問
ご覧のとおり、その後もプログラムが亡くなったそれらの墓があります。があるのでは"喪"のexitfunctionの例外?
import atexit
def helloworld():
print("Hello World!")
atexit.register(helloworld)
raise Exception("Good bye cruel world!")
出力
Traceback (most recent call last):
File "test.py", line 8, in <module>
raise Exception("Good bye cruel world!")
Exception: Good bye cruel world!
Hello World!
解決
なぜいるものの、インストールすることができるexcepthook呼び出されるPythonまた必要に応じて、環境に適したuncatchedの例外は、この配列の登録機能 atexit
モジュールです。
う:
import sys
import atexit
def clear_atexit_excepthook(exctype, value, traceback):
atexit._exithandlers[:] = []
sys.__excepthook__(exctype, value, traceback)
def helloworld():
print "Hello world!"
sys.excepthook = clear_atexit_excepthook
atexit.register(helloworld)
raise Exception("Good bye cruel world!")
注意と行動が正の場合は例外がスローから atexit
登録機能(その行動をされていってもこのフックは使用されます。
他のヒント
お問い合わせいただいた場合
import os
os._exit(0)
出口のハンドラを、自分または登録その他のモジュールに願います。
のほか、呼び出します。_exit()を避ける登録出口よりハンドラが必要となりますの独自のレンダリングメカニズムの例外:
import atexit
import os
def helloworld():
print "Hello World!"
atexit.register(helloworld)
try:
raise Exception("Good bye cruel world!")
except Exception, e:
print 'caught unhandled exception', str(e)
os._exit(1)
所属していません StackOverflow