概要

Pythonでは、カスタム例外を作成することで、エラーハンドリングを柔軟に制御できます。標準のExceptionクラスを継承し、独自の例外を定義することが推奨されています。本記事では、カスタム例外を作成するための基本的な手順や、カスタムメッセージや追加の属性を持つ例外の設計方法を紹介します。

基本的なカスタム例外の定義

最もシンプルなカスタム例外は、Exceptionを継承するだけで作成できます。

class MyCustomError(Exception):
    """特定のエラーメッセージを扱うカスタム例外"""
    pass
raise MyCustomError("このエラーが発生しました")

このコードにより、MyCustomErrorが特定のエラーメッセージとともに発生します。

__init__を使ってカスタム例外にデータを渡す

エラーの詳細情報を含む例外を作成したい場合、__init__メソッドをオーバーライドして追加データを受け取ることができます。

class ValidationError(Exception):
    def __init__(self, message, errors=None):
        super().__init__(message)
        self.errors = errors
try:
    raise ValidationError("無効なデータ", {"field": "name", "error": "必須"})
except ValidationError as e:
    print(e.errors)  # {"field": "name", "error": "必須"}

__str__メソッドでメッセージをカスタマイズ

デフォルトのエラーメッセージ表示をカスタマイズしたい場合は、__str__メソッドをオーバーライドできます。

class CustomError(Exception):
    def __init__(self, message, code):
        self.message = message
        self.code = code
    
    def __str__(self):
        return f"Error {self.code}: {self.message}"
raise CustomError("ファイルが見つかりません", 404)

結論

Pythonでカスタム例外を使用すると、エラーハンドリングをより直感的にし、コードのメンテナンスが容易になります。基本的な例外定義から高度な情報を持つ例外まで、適切なデザインで実装することが重要です。