11

私は Python を学んでいて、簡単には理解できない概念に出くわしました:else構成内のオプション ブロックですtry

ドキュメントによると:

try ... except ステートメントにはオプションの else 句があり、存在する場合はすべての except 句の後に続く必要があります。try 句が例外を発生させない場合に実行する必要があるコードに役立ちます。

私が混乱しているのは、try 句が try コンストラクト内で例外を発生させない場合に実行する必要があるコードがあるのはなぜですか? 同じインデント レベルで単に try/except の後に続くようにしないのはなぜですか? 例外処理のオプションが簡素化されると思います。または、別の質問方法は、ブロック内のコードがelse実行することであり、それとは無関係に単に try ステートメントに従っている場合には実行されないことです。多分私は何かが欠けている、私を啓発してください。

この質問はこれと似ていますが、探しているものが見つかりませんでした

4

2 に答える 2

18

elseブロックは、コードが例外を発生させない場合にのみ実行されますtry。コードをelseブロックの外に置くと、例外に関係なく発生します。また、finallyこれは一般に重要な の前に発生します。

これは一般に、エラーが発生する可能性のある短いセットアップまたは検証セクションがあり、その後にエラーを隠したくない、セットアップしたリソースを使用するブロックがある場合に役立ちます。エラーを伝播させたいときにtryエラーが句に移動する可能性があるため、コードを に配置することはできません。exceptセットアップが失敗したか、すべてが破壊されたために、リソースが確実に利用できないため、コンストラクトの外に置くことはできませんfinally。したがって、elseブロックがあります。

于 2013-08-22T17:59:19.597 に答える