Pythonの例外メッセージをカスタマイズする方法を完全解説!__str__メソッドでわかりやすいエラー表示
生徒
「Pythonのエラーって、英語だったり意味が分かりにくかったりしますよね?」
先生
「確かに最初は戸惑いますね。でも、エラーメッセージは自分で分かりやすく作れますよ。」
生徒
「えっ、エラーの文章を変えられるんですか?」
先生
「はい。__str__メソッドを使うと、表示される例外メッセージを自由に決められます。」
1. Pythonの例外メッセージとは何か
Pythonでエラーが起きると、画面に文字がずらっと表示されます。このとき表示される文章が例外メッセージです。例外メッセージは、何が原因で問題が起きたのかを人に伝えるための説明文です。
しかし、標準の例外メッセージは初心者には分かりにくいことが多く、英語表記になっている場合もあります。そのため、自分や利用者が理解しやすい文章に変えたい場面が出てきます。
2. 標準の例外メッセージの例
まずは、Pythonにもともと用意されている例外メッセージを見てみましょう。数字に変換できない文字列を数値に変換しようとすると、例外が発生します。
number = int("abc")
ValueError: invalid literal for int() with base 10: 'abc'
このメッセージを見て、何が起きたのかすぐに理解できる人は多くありません。そこで、エラーメッセージを日本語で分かりやすくしたくなります。
3. 独自の例外クラスを作る考え方
Pythonでは、自分専用の例外クラスを作ることができます。これは「特別なエラーの種類を自分で定義する」ことだと考えると分かりやすいです。
例外クラスは、Exceptionクラスを元にして作ります。ここに独自のルールやメッセージを追加できます。
class MyError(Exception):
pass
この時点では、まだ中身は空っぽですが、これだけでも独自の例外として使えます。
4. __str__メソッドの役割
__str__メソッドは、そのオブジェクトを文字として表示するときに使われる特別なメソッドです。例外クラスに__str__メソッドを書くと、エラー表示の文章を自由に決められます。
難しく感じるかもしれませんが、「エラーが表示されるときの文章を返す場所」と考えると理解しやすくなります。
class MyError(Exception):
def __str__(self):
return "入力内容に問題があります"
5. カスタマイズした例外を実際に使う
作成した例外クラスは、raiseという命令を使って発生させます。raiseは「ここでエラーを起こす」という意味の命令です。
try:
raise MyError()
except MyError as e:
print(e)
入力内容に問題があります
このように、__str__メソッドで書いた文章がそのまま表示されます。これにより、エラー内容を日本語で直感的に伝えられます。
6. 情報を持たせた例外メッセージ
例外には、追加の情報を持たせることもできます。たとえば、どんな値が間違っていたのかをメッセージに含めると、さらに親切になります。
class InputError(Exception):
def __init__(self, value):
self.value = value
def __str__(self):
return f"入力された値「{self.value}」は正しくありません"
7. 実務でも役立つ理由
例外メッセージをカスタマイズすると、エラーの原因をすぐに把握できるようになります。自分だけでなく、他の人がプログラムを使う場合にも大きな助けになります。
特に初心者向けのプログラムや学習用ツールでは、専門用語を避けたエラーメッセージが重要です。
8. 初心者が意識したいポイント
__str__メソッドは、難しい仕組みではありません。「エラーが起きたときに表示したい文章を書く場所」と覚えておくと十分です。
例外メッセージを工夫するだけで、プログラムの親切さと分かりやすさは大きく変わります。