【Python】プログラムエラーと例外の意味まとめ


Pythonでプログラミングをする際に、実行するとエラーが発生することが多々あります。
初めの頃はエラーメッセージを見てもどのように対処すれば良いのかわかりますが、中には意味があまりわからない方も多いと思います。

以下では、エラーの種類やエラ〜メッセージの意味についてまとめます。


Pythonプログラムで実行の際に発生する「構文エラー」と「例外」

Pythonのエラーには、構文エラーと例外の2種類があり、それぞれの意味は以下となります。

  • 構文エラー:プログラムの書き方が間違っている時に発生するエラー
  • 例外:構文は正しくても実行時に発生するエラー(変数名を間違っているなど)

詳細は以下を参考にしてください。

「構文エラー」プログラムの書き方ミス

構文エラーは以下のようにfor文などの構造化プログラムに使用する「:」が抜けていたり、インデントを間違って適切な場所に構文が書かれていない時にエラーが発生します。

以下では正しい構文と、それぞれの間違った構文を例として上げました。
それぞれに発生する構文エラーを確認しましょう。

正しい構文

以下の構文はfor文でリストからそれぞれのデータを取り出し、出力しています。

※ for_test.py

point_list = [10, 20, 100]
for point in point_list:
    print('ナンバーは', point, 'です。')

※ 実行結果

$ python3 for_test.py 
ナンバーは 10 です。
ナンバーは 20 です。
ナンバーは 100 です。
$ 

「構文エラー」SyntaxError

以下のエラーでは2行目でfor文の最後に設定する「:」が抜けている際に起こるエラーです。
このような一般的な構文エラーは「SyntaxError」として表示され、どこが間違っているのか「^」で指摘してくれます。

※ for_test.py

point_list = [10, 20, 100]
for point in point_list
    print('ナンバーは', point, 'です。')

※ 実行結果

$ python3 for_test.py 
  File "for_test.py", line 2
    for point in point_list
                          ^
SyntaxError: invalid syntax
$

「構文エラー」IndentationError

IndentationErrorはではインデントの位置が正しくない時に発生します。
以下のように「print」の位置がインデントされていなく正しくない位置にある時にエラーとなります。

これも「^」でどこのインデントでエラーが発生しているか指摘をしてくれます。

※ for_test.py

point_list = [10, 20, 100]
for point in point_list:
print('ナンバーは', point, 'です。')

※ 実行結果

$ python3 for_test.py 
  File "for_test.py", line 3
    print('ナンバーは', point, 'です。')
    ^
IndentationError: expected an indented block
$ 

「例文」構文は正しいが実行する際にエラー

例外はPythonプログラムの構文としては正しくても、実行時に発生するエラーのことをいいます。

以下のプログラムでは、print関数の変数名(point)を間違えているため、エラー(nameError)が発生しています。
エラーメッセージを確認することにより、どの行の何が間違っているのかを指摘してくれます。

point_list = [10, 20, 100]
for point in point_list:
    print('ナンバーは', pointt, 'です。')

※ 実行結果

$ python3 for_test.py 
Traceback (most recent call last):
  File "for_test.py", line 3, in <module>
    print('ナンバーは', pointt, 'です。')
NameError: name 'pointt' is not defined
$ 

3行目のコメントでは、line3(3行目)で「pointt」というエラーが間違っている(5行目)と指摘してくれます。

様々な「例外」まとめ

プログラム実行時に発生をする主な「例外」についてその意味をまとめます。
例外の一覧はPythonの公式ドキュメントの「組み込み例外」でまとめているので参照しましょう。
https://docs.python.org/ja/3/library/exceptions.html

以下ではよく発生する例外の一覧をまとめました。

よく発生しやすい「例外」の一覧
名前 意味
NameError 指定された名前の変数が見つからない、間違っている
IndexError リストなどの構文で範囲外に添字が書かれている
FileNotFoundError ファイルが存在しない
KeyError 指定したキーが辞書に存在しない
TypeError データの型が正しくない
ValueError データの型は正しいが値が適切でない
ZeroDivisionError 0で割り算をした際のエラー

プログラムエラーと例外で出力されるメッセージは「Traceback」と呼ばれます。
このTracebackを読むとどこで問題が発生したかがわかります。

エラー発生時のTrackbackに慣れるようにして、エラーに対応できるようにしましょう。


関連記事


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

ABOUTこの記事をかいた人

blank

インターネット関連のSEをやっています。 ネットワーク、サーバー、ストレージ、仮想基盤まで幅広く手を出しており、MVNOの構築経験もあります。 現在は、Pythonを使ったプログラミングの開発をしネットワークの自動化ツールを作成しています! Pythonの入門書も作成しているので、ぜひ参考にしてください!