4

Python(2.7)のドキュメントによると:

__del __()メソッドが呼び出される不安定な状況のため、実行中に発生した例外は無視され、代わりにsys.stderrに警告が出力されます。

__del __()で発生した例外を完全かつ完全に無視する最もPython的な方法は何でしょうか。つまり、例外を無視するだけでなく、sterrに何も出力しません。stderrをnullデバイスに一時的にリダイレクトするよりも良い方法はありますか?

4

3 に答える 3

7

これは__del__()あなたが書いている関数にあると思います。もしそうなら、自分で例外をキャッチして無視してください。

def __del__(self):
    try:
        # do whatever you need to here
    except Exception:
        pass

stderrへのロギングは、のキャッチされていない例外にのみ適用さます__del__()

于 2012-12-20T18:08:22.483 に答える
3

ただtry/except内部を使用して__del__()ください:

def __del__(self):
   try:
      # ...
   except:
      pass

これはすべての例外をキャッチし、何も出力しません。

于 2012-12-20T18:08:11.670 に答える
2

try/exceptブロックを使用するだけです。

def __del__(self):
    try:
        something_that_might_throw()
    except:
        pass
于 2012-12-20T18:08:50.453 に答える