このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
【Python入門】try文とexcept節の定義

try文とexcept節の定義
プログラム実行中に予期しないエラーが発生すると、そのままではプログラムが強制終了してしまいます。try文とexcept節を使うことで、エラー(例外)が起きた際にもプログラムの流れを制御し、適切な処理を行いながら実行を継続することが可能となります。ここでは、try文とexcept節の基本的な書き方と動作、そして複数の例外を扱う方法について、表や具体例を交えて解説します。

プログラムのダウンロード
「ダウンロード」から、JupyterLab で実行できるサンプルプログラムがダウンロードできます。ファイルは、ESET Endpoint Securityでウイルスチェックをしておりますが、ダウンロードとプログラムの実行は自己責任でお願いいたします。
1.try文とexcept節の基本
1.1. try文の役割
try文は、例外が発生する可能性のある処理を記述するためのブロックです。try節内でエラーが起こらなければ、全ての処理が順次実行され、except節はスキップされます。
try:
# 例外が発生する可能性のある処理
print("This is the try block.")
except Exception:
# 例外が発生した場合に実行される処理
print("An error occurred.")
1.2. except節の役割
except節は、try節内で発生した特定の例外に対して処理を行うブロックです。例外クラスを指定することで、そのエラーが発生した場合にのみ実行されます。複数のexcept節を並べることで、異なるエラーに対して個別の対応が可能になります。
以下の表は、try文とexcept節の基本構造を示しています。
項目 | 説明 |
---|---|
try節 | 例外が発生する可能性のある処理を記述する部分 |
except節 | 指定した例外が発生した場合に実行される処理を記述する部分 |
2.try文とexcept節を使った例外処理の実践
2.1. try文の動作の流れ
try節内で例外が発生すると、その時点以降の処理はスキップされ、該当するexcept節へ移ります。例外が発生しなかった場合は、except節は実行されずにtry文の外に処理が移ります。
【try文の動作フロー】
状況 | 実行される処理 |
---|---|
例外が発生しない場合 | try節内の全処理が順に実行され、except節はスキップされる。 |
例外が発生した場合 | try節内の発生時点以降の処理はスキップされ、該当するexcept節が実行される。 |
2.2. 例外処理を用いた割り算プログラムの例
以下は、ユーザーから「dividend(被除数)」と「divisor(除数)」を入力し、整数の割り算を行うプログラムです。ここでは、発生しうるエラーとして、数字以外の入力によるValueErrorと、除数が0の場合のZeroDivisionErrorに対して、それぞれ適切なエラーメッセージを表示します。
while True:
try:
# 被除数と除数をユーザーから入力し、整数に変換する
dividend = int(input("Dividend: "))
divisor = int(input("Divisor: "))
# 整数除算の結果を表示
print("Result:", dividend // divisor)
print("-" * 25)
except ValueError:
# 入力が整数に変換できなかった場合の処理
print("Input an integer.")
print("-" * 25)
except ZeroDivisionError:
# 除数が0の場合の処理
print("Divisor must not be 0.")
print("-" * 25)
実行結果
Dividend: 20
Divisor: 5
Result: 4
-------------------------
Dividend: abc
Input an integer.
-------------------------
Dividend: 10
Divisor: 0
Divisor must not be 0.
-------------------------
詳しい解説
while True:
で無限ループを開始。Ctrl + Cなど(JyupyterLabでは■ボタン)で手動終了します。try:
節内では、int(input(...))
によってユーザー入力を整数に変換しています。ここで、数字以外が入力されるとValueErrorが発生します。- また、
dividend // divisor
の実行時に、もしdivisor
に0が入力されれば、ZeroDivisionErrorが発生します。 - それぞれのexcept節は、発生した例外に応じたエラーメッセージを表示し、区切り線(25個のハイフン)を出力してから、whileループの先頭に戻ります。
- 例外が発生しなかった場合は、try節内の全ての処理が実行され、結果が表示されます。
まとめ
try文とexcept節を用いると、例外が発生した際にも本来の処理の流れを維持しつつ、適切なエラー処理を簡潔に記述することができます。
- try節では、エラーが発生する可能性のある処理を記述し、
- except節では、特定の例外に対して実行すべき処理を記述します。
これにより、ユーザー入力の誤りや計算上の問題が発生しても、プログラムが突然終了することなく、エラーメッセージを表示して再度入力を促すなどの対応が可能となります。