どのようにスキップsys.exitfuncが独自のレンダリングメカニズム例外が発生する

StackOverflow https://stackoverflow.com/questions/80993

  •  09-06-2019
  •  | 
  •  

質問

ご覧のとおり、その後もプログラムが亡くなったそれらの墓があります。があるのでは"喪"の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)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top