Pythonでエラーメッセージを取得する方法を完全解説!初心者でもわかるExceptionオブジェクト
生徒
「Pythonでプログラムを動かしたら、赤い文字のエラーが出て止まってしまいました。これって何が書いてあるんですか?」
先生
「それはPythonが教えてくれているエラーメッセージです。実はその中身をプログラムの中で取り出すこともできます。」
生徒
「エラーの内容をプログラムで扱えるんですか?」
先生
「できますよ。Exceptionオブジェクトという仕組みを使うと、エラーの理由を文字として取得できます。」
1. Pythonのエラーと例外処理とは?
Pythonでプログラムを実行すると、計算ができない、ファイルが見つからない、入力が間違っているなどの理由で処理が止まることがあります。これをエラーと呼びます。
Pythonでは、このエラーを例外として扱います。例外とは「通常とは違う特別な出来事」という意味で、プログラムの途中で問題が起きたことを表します。
例外処理を使うと、エラーが起きてもプログラムを安全に止めたり、別の処理をしたりできます。初心者の方は「エラーが出たときの保険」と考えると理解しやすいです。
2. tryとexceptの基本的な使い方
Pythonの例外処理は、tryとexceptを使って書きます。tryの中に「エラーが起きるかもしれない処理」を書き、exceptで「エラーが起きたときの処理」を書きます。
これは、ガラスのコップを運ぶときに、割れた場合に備えて下にマットを敷いておくようなイメージです。
try:
x = 10 / 0
except Exception:
print("エラーが発生しました")
この例では、0で割る計算ができないためエラーが発生し、exceptの処理が実行されます。
エラーが発生しました
3. Exceptionオブジェクトとは何か
Exceptionオブジェクトは、エラーが起きたときにPythonが自動的に作る「エラーの情報が入った箱」です。この箱の中には、なぜエラーが起きたのかという説明文が入っています。
たとえば、家電が故障したときに表示されるエラーコードのようなもので、原因を知るためのヒントが詰まっています。
このExceptionオブジェクトを受け取ることで、エラーメッセージを文字として取得できます。
4. エラーメッセージを取得する基本方法
エラーメッセージを取得するには、except Exception as eという書き方をします。eという変数に、エラー情報が入ります。
try:
number = int("abc")
except Exception as e:
print(e)
文字を数値に変換しようとして失敗すると、その理由がエラーメッセージとして表示されます。
invalid literal for int() with base 10: 'abc'
5. str関数でエラーメッセージを文字列にする
Exceptionオブジェクトは、そのままでも表示できますが、str()を使うと「ただの文字」として扱えます。ログに保存したり、画面にわかりやすく表示したりするときに便利です。
try:
result = 5 / 0
except Exception as e:
message = str(e)
print("エラー内容:" + message)
エラー内容:division by zero
6. argsを使ってエラー情報を詳しく見る
Exceptionオブジェクトにはargsという情報も入っています。これは、エラーメッセージがリストの形で保存されているものです。
初心者の方は「エラー説明が分解されて入っている」と考えるとイメージしやすいです。
try:
int("xyz")
except Exception as e:
print(e.args)
("invalid literal for int() with base 10: 'xyz'",)
7. エラーメッセージを活用するメリット
エラーメッセージを取得できるようになると、「なぜ失敗したのか」がすぐに分かるようになります。これは、暗闇の中で懐中電灯を持つようなものです。
特に初心者のうちは、エラー文をそのまま表示するだけでも十分な助けになります。無理に隠さず、表示して確認することが大切です。
Pythonの例外処理とExceptionオブジェクトを理解すると、エラーに対する怖さがぐっと減ります。