例外エラーを発生状況に応じて処理し、プログラムを継続させたいならtry
文を使う。
例外が発生すると、何も対応していなければそこでプログラムは停止する。何か対応して継続させたい場合は、例外が発生し得る部分をtry
文のブロックに書き、発生時の対応処理をexcept
のブロックに書く。
以下はユーザに整数の入力を求めるプログラム。やり方は色々あるが、ここでは例外処理を利用している。
while True:
入力 = input("整数入力> ")
try:
整数 = int(入力)
print(整数)
break # 例外が発生しなければwhile文を抜ける
except ValueError:
print("やりなおし")
int(入力)
の部分で入力を整数に変換できなかったとき(文字などを入力)、例外ValueError
が発生する。このときに対応して何か処理したいときは、マーカーのようにexcept
で指定する。
例外が発生するとexcept
の部分まで飛ぶ。発生しなければ、上記のbreak
でwhile
文を抜ける。
文法エラーでも、以下のように「全体がエラー」にならないケースがある。
import 正しいモジュール
import 文法エラーなモジュール
上記の場合、「正しいモジュール」までは読込・実行されるし、下記のように例外をキャッチできる(通常はしない)。
import 正しいモジュール
try:
import 文法エラーなモジュール
except:
print('文法エラーが発生')