我在提醒自己关键词'''''我偶然发现了这篇文章http://effbot.org/zone/python-with-statement.htm。我只是有一个很小的,很明显的问题。文章指出,这可以吞下任何类型错误''
{{1}}
我不太清楚这是怎么回事?我们将非常感谢您的快速解释?
答案 0 :(得分:3)
如果从True
子句返回__exit__
,它将阻止任何错误通过。例如:
class Foo():
def __enter__(self):
print("enter")
def __exit__(self, type, value, tb):
print("exit with", repr(value))
return True
with Foo():
print("inside")
raise ValueError()
将输出
enter
inside
exit with ValueError()
但由于__exit__()
返回True
而未提出任何内容。
在示例中,如果引发的错误是TypeError
,则声明为:
return isinstance(value, TypeError)
将返回True
,TypeError
将被吞并"。