まず結論
Traceback が出たら、最初は全部を読もうとしなくて大丈夫です。
まず見る場所は、次の3つです。
最後の行: エラー名と理由
line番号: 何行目で止まったか
コード行: その行に何が書いてあるか
ここだけ分かると、エラーがかなり追いやすくなります。
こんなときに読む記事です
次のような表示で止まった人向けです。
Traceback (most recent call last):
File "main.py", line 3, in <module>
print(name)
NameError: name 'name' is not defined
英語が多くて怖く見えますが、読む場所を絞れば大丈夫です。
絵で見るなら
Tracebackは、エラーまでの道順を書いた地図のようなものです。
モコが地図の下から見て、まず最後の赤い札を確認します。
最後の札には、NameError のようなエラー名が書いてあります。
その上には、何行目で止まったかの案内があります。
最後の行を見る
まずは、いちばん下の行を見ます。
NameError: name 'name' is not defined
この行には、エラー名と理由が書かれています。
この例では、NameError がエラー名です。
name 'name' is not defined が理由です。
line番号を見る
次に、line と書かれた場所を探します。
File "main.py", line 3, in <module>
この例では、line 3 なので3行目で止まっています。
まずはファイル名よりも、行番号を見ると直しやすいです。
その下のコード行を見る
行番号の下には、止まったコードが出ることがあります。
print(name)
この行で name を使おうとして、Pythonが名前を見つけられなかったと読めます。
エラー名、行番号、コード行を並べて見ると、原因の候補がかなり絞れます。
長いTracebackのとき
Tracebackが何行も続くことがあります。
最初から全部を理解しようとすると大変です。
完全初心者のうちは、まず最後の行を見ます。
エラー名は何?
どのlineで止まった?
その行には何がある?
この3つだけで、検索する言葉も決めやすくなります。
読み方のコツ
Tracebackを見たら、次の順で確認します。
1. 最後の行のエラー名を見る
2. line番号を見る
3. 表示されたコード行を見る
NameError、SyntaxError、FileNotFoundError のようなエラー名が分かれば、個別の記事で原因を確認できます。
手を動かすミニ練習
次のコードを動かして、Tracebackの最後の行を見てみましょう。
print(name)
NameError が出たら、最後の行、line番号、コード行の3つを探してみてください。
3行まとめ
- Tracebackは、エラーが起きた場所と理由を教える表示。
- 最初は最後の行でエラー名を見る。
- 次にline番号と、その下のコード行を確認する。