Pythonでカスタム例外クラスを作成する手順と応用例

この記事では、Pythonでカスタム例外クラスを作成する手順について詳しく解説します。Pythonの例外処理において、組み込みの例外クラスだけでは不十分な場合があります。そのような場合に有用な「カスタム例外クラス」を作成する方法を具体的なコード例とともにご紹介します。さらに、カスタム例外クラスの応用例も2つ以上紹介します。

目次

なぜカスタム例外クラスが必要なのか

Pythonは多くの組み込み例外クラスを提供していますが、特定のビジネスロジックやアプリケーション特有の状況に対応するためには、カスタム例外クラスが必要になることがあります。カスタム例外クラスを作成することで、より明確なエラーハンドリングとデバッグが可能になります。

カスタム例外クラスの基本的な作成手順

カスタム例外クラスの作成は非常に簡単です。基本的には、Pythonの`Exception`クラスを継承して新たなクラスを作成します。

継承による基本形

以下は、最も基本的なカスタム例外クラスの作成方法です。


class MyCustomException(Exception):
    pass

このように、`Exception`クラスを継承した`MyCustomException`クラスが新たなカスタム例外クラスです。

メッセージを持たせる例

通常、例外クラスにはエラーメッセージを持たせることが多いです。`__init__`メソッドをオーバーライドすることで、エラーメッセージを定義できます。


class MyCustomExceptionWithMessage(Exception):
    def __init__(self, message="これはカスタム例外です"):
        self.message = message
        super().__init__(self.message)

このようにして作成した例外クラスは、`raise`キーワードで呼び出せます。

カスタム例外クラスの応用例

応用例1: ファイルのバリデーション

ファイルの拡張子をチェックして、不正なファイル形式の場合にカスタム例外を発生させる例です。


class InvalidFileFormatException(Exception):
    def __init__(self, message="無効なファイル形式です"):
        self.message = message
        super().__init__(self.message)

def validate_file(file_name):
    if not file_name.endswith('.txt'):
        raise InvalidFileFormatException("テキストファイルではありません")
        
try:
    validate_file("sample.jpg")
except InvalidFileFormatException as e:
    print(e)

応用例2: APIリクエストのレート制限

APIからのレスポンスに応じて、レート制限を超えた場合にカスタム例外を発生させる例です。


class RateLimitExceededException(Exception):
    def __init__(self, message="APIのレート制限を超えました"):
        self.message = message
        super().__init__(self.message)

def api_request(rate):
    if rate > 100:
        raise RateLimitExceededException("1分あたりのリクエストが制限を超えました")

try:
    api_request(150)
except RateLimitExceededException as e:
    print(e)

まとめ

Pythonでカスタム例外クラスを作成する手法と、その応用例について解説しました。カスタム例外クラスは、プログラムの可読性と保守性を高める重要な要素です。ぜひこの機会に、自分自身のコードにカスタム例外クラスを導入してみてください。

コメント

コメントする

目次