忽略在__del __()中打印到stderr的异常

时间:2012-12-20 18:06:13

标签: python

根据Python (2.7) documentation

  

由于__del __()方法的不稳定情况   调用时,忽略执行期间发生的异常,并且   警告将打印到sys.stderr而不是

完全绝对忽略__del __()中引发的异常的最Pythonic方法是什么 - 也就是说,不仅忽略了异常,而且没有打印到sterr 。有没有比暂时将stderr重定向到空设备更好的方法?

3 个答案:

答案 0 :(得分:6)

我假设这是在你正在编写的__del__()函数中,如果是这样,只需自己捕获异常并忽略它。

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

登录到stderr仅适用于__del__()未捕获的例外。

答案 1 :(得分:3)

只需在try内使用except / __del__()

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

这将捕获所有异常并且不会打印任何内容。

答案 2 :(得分:2)

只需使用try / except块:

def __del__(self):
    try:
        something_that_might_throw()
    except:
        pass