Python(2.7)のドキュメントによると:
__del __()メソッドが呼び出される不安定な状況のため、実行中に発生した例外は無視され、代わりにsys.stderrに警告が出力されます。
__del __()で発生した例外を完全かつ完全に無視する最もPython的な方法は何でしょうか。つまり、例外を無視するだけでなく、sterrに何も出力しません。stderrをnullデバイスに一時的にリダイレクトするよりも良い方法はありますか?
Python(2.7)のドキュメントによると:
__del __()メソッドが呼び出される不安定な状況のため、実行中に発生した例外は無視され、代わりにsys.stderrに警告が出力されます。
__del __()で発生した例外を完全かつ完全に無視する最もPython的な方法は何でしょうか。つまり、例外を無視するだけでなく、sterrに何も出力しません。stderrをnullデバイスに一時的にリダイレクトするよりも良い方法はありますか?
これは__del__()
あなたが書いている関数にあると思います。もしそうなら、自分で例外をキャッチして無視してください。
def __del__(self):
try:
# do whatever you need to here
except Exception:
pass
stderrへのロギングは、のキャッチされていない例外にのみ適用されます__del__()
。
ただtry
/except
内部を使用して__del__()
ください:
def __del__(self):
try:
# ...
except:
pass
これはすべての例外をキャッチし、何も出力しません。
try/exceptブロックを使用するだけです。
def __del__(self):
try:
something_that_might_throw()
except:
pass