2016-12-22 126 views

回答

11

PyCharm是对的。如果open()失败,则会引发例外,并且既不是return

with不会以某种方式保护您免受生成上下文管理器的表达式中的异常。 with之后的表达式预计会产生一个上下文管理器,此时将存储__exit__方法并调用__enter__方法。这里唯一的结果是上下文管理器被成功生成并输入,或者引发异常。在这个阶段,with在任何时候都不会吞下一个异常,并且默默地跳过该块。