例外処理と 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ではないでしょうか?