このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

【Python入門】try文とelse節

try文とelse節

 プログラムの実行中に例外が発生しない場合のみ実行したい処理と、例外発生時の後片付け処理を明確に分けるため、Pythonではtry文にelse節を組み合わせることができます。else節は、try節内で例外が一切発生しなかった場合にだけ実行されるため、本来の処理の成功時の後続処理を分かりやすく記述できます。
 ここでは、try文とelse節の基本的な構造と役割、そして具体例として矩形の面積を計算するプログラムを用いて解説します。

プログラムのダウンロード

 「ダウンロード」から、JupyterLab で実行できるサンプルプログラムがダウンロードできます。ファイルは、ESET Endpoint Securityでウイルスチェックをしておりますが、ダウンロードとプログラムの実行は自己責任でお願いいたします。

1.try文とelse節の基本

1.1. try節の役割

try節は、例外が発生する可能性のある処理をまとめて記述するブロックです。

try:
    # 例外発生の可能性がある処理

1.2. else節の役割

 else節は、try節で例外が発生しなかった場合にのみ実行される処理を記述します。これにより、例外処理と正常時の後続処理を明確に分離でき、コードの可読性が向上します。

以下の表は、try節とelse節、さらにfinally節の役割をまとめたものです。

役割実行タイミング
try節エラー発生の可能性がある処理を記述エラーがなければ全て実行される。
except節指定した例外が発生した場合の処理を記述該当する例外発生時に実行される。
else節例外が一切発生しなかった場合に実行する処理try節が正常終了した場合に実行される。
finally節例外の有無にかかわらず必ず実行する処理try/except/elseの後に必ず実行される。

2.try 文と else 節の仕組み

2.1. try 文における else 節とは

 try 文は、以下のような構造で書けます。その中で else 節は、例外が発生しなかった場合にのみ実行される特別なブロックです。

pythonコピーする編集するtry:
    # エラーが起こりうる処理
except SomeError:
    # エラーが発生した時の処理
else:
    # エラーが起きなかったときに限り実行
finally:
    # エラーの有無にかかわらず必ず実行

2.2. なぜ else を使うのか

  • try 節には、エラー(例外)を起こす可能性がある処理のみを書くことで、異常系と正常系を明確に分割できる。
  • もし else 節がなければ、正常時の処理例外が起こる可能性のある処理 が同じブロックに混在してしまう。
  • else 節に分けることで、エラー発生のリスクがない(あるいは処理済み)部分 を明示できるので、コードの意図が伝わりやすい。

3.try文とelse節を使ったサンプルプログラム

 ここでは、ユーザーに矩形の幅と高さを入力させ、その面積を計算するプログラムを例示します。例外が発生しなかった場合、else節で「Thank you for your input.」と表示し、最後にfinally節で区切り線を出力します。

3.1. サンプルプログラム:矩形の面積計算

while True:
    try:
        # ユーザーから幅と高さを入力し、実数に変換する
        width = float(input("Width: "))
        height = float(input("Height: "))
        # 矩形の面積を計算する
        area = width * height
        print("Area:", area)
    except ValueError:
        # 数値への変換が失敗した場合のエラー処理
        print("Error: Please enter valid numbers for width and height.")
    else:
        # 例外が発生しなかった場合のみ実行される
        print("Thank you for your input.")
    finally:
        # 例外の有無にかかわらず必ず実行される後片付け処理(区切り線の表示)
        print("-" * 25)

実行結果

Width:  10
Height:  5
Area: 50.0
Thank you for your input.
-------------------------
Width:  abc
Error: Please enter valid numbers for width and height.
-------------------------

解説

  • try節
    ユーザーから"Width:"と"Height:"の入力を受け、それぞれfloat型に変換して矩形の面積を計算しています。
  • except節
    入力が数値に変換できない場合(例:文字列が入力された場合)にValueErrorが発生し、エラーメッセージ「Error: Please enter valid numbers for width and height.」を表示します。
  • else節
    try節で例外が発生しなかった場合のみ実行され、「Thank you for your input.」と表示します。これにより、正常に処理が完了したことを明確に示すことができます。
  • finally節
    例外が発生したかどうかにかかわらず、常に25個のハイフンを表示して、次の入力との区切りを明示します。

まとめ

 try文とelse節を組み合わせることで、エラーが発生しなかった場合の処理を明確に記述でき、プログラムの論理が分かりやすくなります。

  • try節では、例外が発生する可能性のある処理を記述し、
  • except節で特定の例外に対するエラー処理を行い、
  • else節で例外が一切発生しなかった場合の後続処理を記述します。

 さらに、finally節を加えることで、例外の有無にかかわらず必ず実行する後片付け処理を確実に行うことができます。これにより、堅牢でメンテナンスしやすいプログラムの構築が可能となります。