-3

例外処理と with ステートメントを理解しようとしているのですが、python の設計が次のコード ([1] の「単純な」質問に従う) が違法である理由を誰かが理解しているかどうか知りたいです。

with open("a.txt") as f:
    print f.readlines()
except IOError:
    print 'Oops, failed to open the file'

"except" 句が適切なインデント レベルに存在する場合、"with" ステートメントを暗黙的な "try" ステートメントとしても機能させるのは良い考えではないでしょうか? 「with」ブロックは、ブロック内で例外が発生したときに解放する必要があるリソースに関するものですが、リソースの割り当ては常に例外が発生する肥沃な土壌です。例外が発生した場所の近くで例外を処理することは、必ずしもばかげているわけではありません。

[1] に対する回答の 1 つは、contextmanagers を使用して、この効果を得るための最も Pythonic な方法に言及しています。しかし、上記はより明確で短く、さらにPythonicではないでしょうか?

[1] Python 'with' ステートメントの使用中に例外をキャッチする

4

1 に答える 1