Pythonの例外処理を完全理解!初心者でもわかるエラースタックトレースの表示と取得方法
生徒
「Pythonを実行したら、英語がずらっと出て止まってしまいました…これって何ですか?」
先生
「それはエラースタックトレースといって、どこで間違いが起きたかを教えてくれる大切な情報です。」
生徒
「見方が全然わからないんですが、初心者でも理解できますか?」
先生
「大丈夫です。エラーの意味と表示方法を、ゆっくり説明していきましょう。」
1. Pythonのエラーと例外処理とは
Pythonでプログラムを動かしていると、途中で止まってしまうことがあります。これをエラーと呼びます。エラーは、コンピュータが「どうしていいかわからない」と判断した状態です。Pythonでは、このエラーを例外という仕組みで管理しています。
例外処理とは、エラーが起きたときに、原因を調べたり、安全に処理を止めたりするための考え方です。初心者のうちは、エラーが出ると不安になりますが、実はエラーはプログラムを直すためのヒント集なのです。
2. エラースタックトレースとは何か
エラースタックトレースとは、エラーが起きた場所と、そこに至るまでの道順を文字で表示したものです。たとえるなら、「どの道を通って迷子になったか」を教えてくれる地図のようなものです。
Pythonでは、エラーが発生すると自動的にスタックトレースが画面に表示されます。英語が多くて難しく見えますが、重要なのは「ファイル名」「行番号」「エラーの種類」です。
3. 何もしなくても表示されるスタックトレース
まずは、Pythonでエラーが起きたときの基本的な表示を見てみましょう。以下は、0で割り算をしたときの例です。
number = 10
result = number / 0
print(result)
ZeroDivisionError: division by zero
このように、Pythonは自動でエラー内容を表示します。ZeroDivisionErrorは「0で割ろうとした」という意味のエラーです。
4. tryとexceptでエラーを受け取る
エラースタックトレースは便利ですが、プログラムを途中で止めたくない場合もあります。そのときに使うのがtry-exceptです。これは「エラーが起きそうな処理を試して、失敗したら別の動きをする」という仕組みです。
try:
number = 10
result = number / 0
except Exception as e:
print("エラーが発生しました")
print(e)
エラーが発生しました
division by zero
ここでは、エラーの内容を変数に入れて表示しています。これだけでも、何が原因かが分かります。
5. tracebackモジュールで詳細を表示する
より詳しいエラースタックトレースを表示したい場合は、Python標準のtracebackモジュールを使います。モジュールとは、便利な機能がまとまった道具箱のようなものです。
import traceback
try:
data = [1, 2, 3]
print(data[5])
except Exception:
traceback.print_exc()
IndexError: list index out of range
この方法を使うと、エラーが起きた行番号や処理の流れが分かりやすく表示されます。
6. エラースタックトレースを文字として取得する
エラースタックトレースは、画面に表示するだけでなく、文字として保存することもできます。ログファイルに残したいときに便利です。ログとは、動作の記録メモのことです。
import traceback
try:
int("abc")
except Exception:
error_text = traceback.format_exc()
print(error_text)
このようにすると、エラー内容を変数に入れて、後から保存や送信ができます。
7. スタックトレースを見るときのポイント
初心者の方は、すべてを理解しようとしなくて大丈夫です。まずは一番下の行に書かれているエラーの種類と、その直前の行番号に注目してください。そこが、問題が起きた場所です。
エラースタックトレースは怖いものではなく、プログラムを直すための道しるべです。何度も見ることで、自然と読み方が身についていきます。
8. 初心者が安心してエラーと向き合うために
Pythonの学習では、エラーは必ず通る道です。エラースタックトレースを正しく表示・取得できるようになると、原因を自分で調べられるようになります。これは、プログラミングを続ける上でとても大切な力です。
「エラーが出た=失敗」ではなく、「次に進むためのヒントが出た」と考えると、学習が楽になります。