例外と構文エラーについて

8.1 例外と構文エラーについて

例外とはプログラム実行時に発生する予期せぬエラーのことを言います。Pythonプログラムでは発生した例外の内容により「構文エラー(syntax error)」と「例外(exception)」に区別されます。
「構文エラー」は、スペルミスやインデントミスなどインタプリタが理解できない構文によって起こされるエラーのことです。
一方例外とは、構文が正しいが、プログラムの実行中に検知される類のエラーのことを意味します。
例としては以下が挙げられます。

  • 整数を0で割り算を行った。ZeroDivisionError
  • 四則演算で文字列を使用した。TypeError
  • 辞書に登録されていないキーにアクセス使用とした。KeyError
  • 配列の要素数より大きい要素数を指定してアクセスを行った。 IndexError など

上記は、プログラム(ソースコード)を実行して初めてエラーがあることが分かります。Pythonでは、このような実行時のエラーを適切に処理するために、例外(exception:エクセプション)という仕組みを備えています。
まずは実行時のエラーがどのようなものなのか、次の項のプログラムで確認してみましょう。

8.1.1 配列要素数を超えたアクセスに対して例外処理を行わないプログラム

配列にわざと最大配列要素の数を超えて代入を行い、実行時エラーを起こします。

ソース・フォルダー: /Desktop/Python基礎講座
ファイル名: 第8章.ipynb
アクセスURL: http://localhost:8888/notebooks/Desktop/Python基礎講座/第8章.ipynb

    books = ['Java','PHP','Python','Javascript']

    print('処理開始')
    print(books[4])
    print('処理終了')
	

実行結果

	処理開始
	---------------------------------------------------------------------------
	IndexError                                Traceback (most recent call last)
	<ipython-input-8-6ea88a409f32> in <module>
	      2 
	      3 print('処理開始')
	----> 4 print(books[4])
	      5 print('処理終了')
	

解説

実行結果からも分かるように、indexエラーが発生しプログラムが終了しています。
それは4行目の処理で、インデックス番号が0~3までのリストbooksに対して、インデックス番号が4の要素へアクセスしようとしたためです。

実行結果からも分かるように、indexエラーが発生しプログラムが終了しています。
それは4行目の処理で、インデックス番号が0~3までのリストbooksに対して、インデックス番号が4の要素へアクセスしようとしたためです。

① コンソールにメッセージが出力されているので、3行目までの処理は正しく行われている。
② 例外の種類:IndexError(範囲外の添字で配列にアクセス)
③ 発生箇所:4 行目で発生。
上記の情報を元にプログラムのエラーを確認することができます。

ポイント

  • 実行時エラー(例外)が発生すると、処理が中断してしまう。その際コンソール画面にエラーの詳細が表示されるので、それを元にエラー原因を知ることができる。

では次の項で今回発生したような実行時エラー(例外)を処理するための基本構文を紹介します。


NEXT>> 8.2 例外処理する仕組み