由于调用 __del__() 方法的不稳定环境,在执行期间发生的异常将被忽略,而是向 sys.stderr 打印警告
完全且绝对忽略 __del__() 中引发的异常的最 Pythonic 方式是什么——也就是说,不仅忽略异常,而且不打印任何内容到 sterr。有没有比临时将 stderr 重定向到空设备更好的方法?
由于调用 __del__() 方法的不稳定环境,在执行期间发生的异常将被忽略,而是向 sys.stderr 打印警告
完全且绝对忽略 __del__() 中引发的异常的最 Pythonic 方式是什么——也就是说,不仅忽略异常,而且不打印任何内容到 sterr。有没有比临时将 stderr 重定向到空设备更好的方法?
我假设这是在__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