Pythonのカスタム例外を作成する方法を完全解説!初心者でもわかる独自のExceptionクラス入門
生徒
「Pythonでエラーを自分で作れるって聞いたんですが、本当ですか?」
先生
「できますよ。Pythonではカスタム例外と呼ばれる、独自のExceptionクラスを作れます。」
生徒
「そもそも例外って何なんですか?」
先生
「プログラムの実行中に起こる問題を知らせる仕組みです。では、基本から順番に見ていきましょう。」
1. Pythonの例外(エクセプション)とは?
Pythonの例外(エクセプション)とは、プログラムの実行中に発生するトラブルを知らせるための仕組みです。例えば、存在しないファイルを開こうとしたり、数字として計算できない文字を計算しようとしたときに発生します。
例外は、料理中に「火を消し忘れた!」と警報が鳴るようなものです。問題が起きたことをプログラムに伝え、処理を止めたり、別の対応をさせたりできます。
2. Exceptionクラス(エクセプションクラス)の基本
Pythonでは、すべての例外はExceptionクラス(エクセプションクラス)を元に作られています。Exceptionは、例外の親クラスのような存在です。
身近な例でいうと、「動物」という大きな分類があり、その中に「犬」や「猫」があるイメージです。Pythonの例外も同じ構造になっています。
3. なぜカスタム例外(独自例外)を作るのか
Pythonには多くの標準例外がありますが、プログラムの内容によっては意味が分かりにくいことがあります。そこで使われるのがカスタム例外(独自例外)です。
例えば、「年齢がマイナスです」というエラーを表現したい場合、専用の例外を作ることで、エラーの意味が一目で分かるようになります。
4. カスタム例外クラスの作り方
カスタム例外は、Exceptionクラスを継承(けいしょう)して作成します。継承とは、既存のクラスの機能を引き継ぐことです。
class AgeError(Exception):
pass
このようにクラスを定義するだけで、独自の例外クラスが完成します。passは「何もしない」という意味で、最低限の形です。
5. raise文(レイズ文)で例外を発生させる
作成したカスタム例外は、raise文(レイズ文)を使って発生させます。raiseは「例外を投げる」という意味です。
age = -5
if age < 0:
raise AgeError("年齢は0以上で入力してください")
このコードでは、年齢が0未満の場合にAgeErrorが発生します。エラーメッセージも自由に指定できます。
6. try-exceptでカスタム例外を処理する
発生したカスタム例外は、try-except文で受け取って処理できます。これにより、プログラムが突然止まるのを防げます。
try:
age = -3
if age < 0:
raise AgeError("不正な年齢です")
except AgeError as e:
print(e)
不正な年齢です
このように、カスタム例外も通常の例外と同じ方法で扱えます。
7. エラーメッセージを持つカスタム例外
カスタム例外では、エラーメッセージをより分かりやすくするために、初期化処理を書くこともできます。
class LoginError(Exception):
def __init__(self, message):
self.message = message
super().__init__(message)
このようにすると、ログイン失敗など特定の状況専用の例外を表現できます。
8. カスタム例外を使うメリット
カスタム例外を使うことで、エラーの原因が明確になり、プログラムの読みやすさと保守性が向上します。特に初心者のうちは、エラー内容が日本語で分かりやすいだけでも理解が進みます。
また、エラーの種類ごとに処理を分けられるため、実務でも非常に重要な技術です。