例外処理try文

例外エラーを発生状況に応じて処理し、プログラムを継続させたいならtry文を使う。


    exceptで例外発生時の処理を書く

    例外が発生すると、何も対応していなければそこでプログラムは停止する。何か対応して継続させたい場合は、例外が発生し得る部分をtry文のブロックに書き、発生時の対応処理をexceptのブロックに書く。

    以下はユーザに整数の入力を求めるプログラム。やり方は色々あるが、ここでは例外処理を利用している。

    while True:
      入力 = input("整数入力> ")
      try:
        整数 = int(入力)
        print(整数)
        break # 例外が発生しなければwhile文を抜ける
      except ValueError:
        print("やりなおし")
    

    int(入力)の部分で入力を整数に変換できなかったとき(文字などを入力)、例外ValueErrorが発生する。このときに対応して何か処理したいときは、マーカーのようにexceptで指定する。

    例外が発生するとexceptの部分まで飛ぶ。発生しなければ、上記のbreakwhile文を抜ける。


    文法エラーでもキャッチできる稀な例

    文法エラーでも、以下のように「全体がエラー」にならないケースがある。

    import 正しいモジュール
    import 文法エラーなモジュール
    

    上記の場合、「正しいモジュール」までは読込・実行されるし、下記のように例外をキャッチできる(通常はしない)。

    import 正しいモジュール
    try:
      import 文法エラーなモジュール
    except:
      print('文法エラーが発生')