レッスン1 / 6問目

『try文(例外処理)』

このレッスンでは例外処理のtry文について学習していきます。

例外(exception)とは

例外とはエラーのことです。これまで、Pythonのコードを実行した際に「NameError」や「TypeError」といったエラーが発生したと思います。これらのエラーは「例外」といいます。

例外処理とは

これらの例外が発生した際に、あらかじめ何らかの処理プログラムとして用意しておくことを例外処理と呼びます。

「例外〇〇が発生した場合、△△の処理をする」というプログラムを記述しておくことで、ある場面において発生する例外に備えることができます。

この例外処理を行うには、try文というものを使います。

try文

では、例外処理を行うtry文について見ていきましょう。

try文の書き方は以下のとおりです。

try:     例外が発生する可能性のあるコード except 発生する可能性のある例外:     例外が発生した場合の処理

try文ではtryexceptの間に例外が発生する可能性のあるーコードを記述し、exceptに続けて発生する可能性のある例外を記述します。例えばIndexErrorを想定する場合は以下のようにexceptに続けてIndexErrorと記述します。

try:     例外が発生する可能性のあるコード except IndexError:     例外が発生した場合の処理

そして実際にtryexceptの間に記述したコードでIndexError発生した場合に、exceptに記述した処理が実行されます。

また、try文ではif文やfor文と同様にコロンとインデントが必要となります。

具体例

では具体例を見ていきましょう。以下のコードはリストaに存在しないインデックスを指定しているため、IndexErrorが発生するコードです。

  1. a = []
  2. a[0]    # 例外が発生する
Traceback (most recent call last): File "main.py", line 5, in <module> a[0] IndexError: list index out of range    # 例外が発生する

上記コードで例外処理を記述すると以下のようになります。

  1. a = []
  2. try:
  3.     a[0]    # 例外処理対象のコード
  4. except IndexError:    # IndexErrorをキャッチする
  5.     print("IndexErrorが発生した際の処理")    # 例外が発生した際の処理
IndexErrorが発生した際の処理    # exceptの処理が実行されている

例外が発生するコードである「a[0]」をtry~except間に記述し、exceptに続けて想定される例外IndexErrorを記述します。
そして、実際に例外が発生した場合exceptの処理が実行されます。ここでは例外が発生した際の処理をprint("IndexErrorが発生した際の処理")としていますが、実際の処理では、適切なエラーメッセージを返すなど、様々な処理が考えれられます。

どのような場面で使うのか

実際のプログラムでは、データベースからデータを取得したり、ユーザーからの入力を受け取ったりなど、プログラムが複雑化します。

すると、プログラムとしては正しくても、ある場面では例外が発生してしまう場面に遭遇します。そのような場合に例外処理を行います。

例えば、上記の例題で見た「IndexError」はリストに存在しないインデックスを指定した際に発生するエラーですが、リスト要素を取得するプログラムの中で、ある場面においてリストが空になるという場面があります。その際に例外処理を記述しておくことでIndexErrorが発生した場合も正常にプログラムを動作させたりすることができます。

まとめ

このレッスンの内容を以下にまとめます。

  • 例外(エラー)が発生した際のプログラムを記述することを例外処理と呼ぶ
  • 例外処理の対象とするコードはtry~exceptの間に記述する
  • exceptに続けてキャッチする例外を記述する

ではこのレッスンは以上となります。
演習課題にチャレンジしましょう。

Lesson1

エディタ上に存在しないキーを指定するプログラムがあります。まずはこのプログラムを実行してください。
するとKeyErrorが発生します。
このプログラムに対して例外処理を行ってください。例外が発生した際の処理は以下のとおりとします。

Last updated:2019/12/18

KeyErrorが発生しました。
  1. # 1. try文を用いて指定した例外処理を行ってください
  2. a = {}
  3. try:
  4. a["b"]
  5. except KeyError:
  6. print("KeyErrorが発生しました。")
main.py
設定
g
n
i
d
a
o
L