Pythonで組み込み例外を継承してカスタム例外を作成する方法

Pythonでは、エラーや例外条件を処理するための強力な機構が提供されています。しかし、標準ライブラリが提供する組み込み例外だけでは、特定の状況に対応できない場合があります。そのような場合、カスタム例外を作成することで、より柔軟かつ明示的なエラーハンドリングが可能です。この記事では、Pythonで組み込み例外を継承してカスタム例外を作成する方法について詳しく解説します。

目次

組み込み例外とは

Pythonには`ZeroDivisionError`や`ValueError`など、多くの組み込み例外が存在します。これらは一般的なプログラミングエラーや状況をカバーするために設計されています。しかし、特定のビジネスロジックや独自のエラー条件に対応するためには、これらの組み込み例外では不十分な場合があります。

カスタム例外の作成

カスタム例外を作成するには、組み込み例外クラスを継承します。基本的な形は以下のようになります。

class MyCustomError(Exception):
    pass

この例では、`Exception`クラスを継承して`MyCustomError`という新しい例外クラスを作成しています。`pass`は何もしないという意味で、特定の処理を後から追加する場合に使います。

例外に情報を追加する

例外クラスには、エラーメッセージやエラーに関連する情報を格納できます。`__init__`メソッドをオーバーライドすることで、これを実現できます。

class MyCustomErrorWithInfo(Exception):
    def __init__(self, message, code):
        super().__init__(message)
        self.code = code

この例では、`MyCustomErrorWithInfo`クラスは`message`と`code`という2つの情報を受け取ります。`message`はエラーメッセージ、`code`はエラーコードです。

応用例

カスタム例外を使った応用例をいくつか紹介します。

応用例1: ユーザー認証エラー

ウェブアプリケーションでよく見られるユーザー認証エラーの例です。

class AuthenticationError(Exception):
    def __init__(self, message="Authentication failed"):
        super().__init__(message)

応用例2: レート制限エラー

APIリクエストにレート制限を設けた場合のエラーです。

class RateLimitError(Exception):
    def __init__(self, message="Rate limit exceeded", retry_after=60):
        super().__init__(message)
        self.retry_after = retry_after

応用例3: データバリデーションエラー

入力データが不正な形式である場合のエラーです。

class ValidationError(Exception):
    def __init__(self, message="Invalid data", field=None):
        super().__init__(message)
        self.field = field

まとめ

この記事では、Pythonで組み込み例外を継承してカスタム例外を作成する方法を解説しました。特定のエラーコンテキストに合わせてカスタム例外を作成することで、プログラムのロバスト性とメンテナンス性を高めることができます。

コメント

コメントする

目次