ホームページ >バックエンド開発 >Python チュートリアル >最新の Python でカスタム例外を効果的に作成および処理するにはどうすればよいですか?

最新の Python でカスタム例外を効果的に作成および処理するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-18 18:04:10165ブラウズ

How Can I Create and Handle Custom Exceptions Effectively in Modern Python?

最新の Python でのカスタム例外処理

Python では、エラーを管理し、コードの安定性を確保するためにカスタム例外クラスを定義することが不可欠です。そのための適切なアプローチは Python のバージョンごとに進化しており、この記事では、Python 2.5 との互換性と Python 2.6 および 3.* 標準への準拠に焦点を当てて、「最新の Python」の推奨事項を検討します。

カスタム例外宣言

Python 2.6.2 の非推奨の警告は、メッセージを設定することを示しています。 BaseException の属性は使用しないことをお勧めします。 PEP-352 によると、この属性は、段階的に廃止される Python 2.5 で特定の意味を持っていました。したがって、カスタム例外では属性名として message を使用することは避けるべきです。

代わりに、Exception の __init__ メソッドをオーバーライドして、目的のメッセージをパラメーターとして渡すことをお勧めします。これにより、例外の __str__ または __unicode__ メソッドを介してメッセージにアクセスできるようになります。このメソッドは、例外が文字列に変換されるときに自動的に呼び出されます。

追加データの受け渡し

カスタム例外に追加データを含めるには、追加の引数を __init__ メソッドに渡すのが一般的です。これらの引数は例外のインスタンス属性として保存され、必要に応じてアクセスできます。 Python 2 では、基本クラスのコンストラクターを呼び出すために super() を使用してスーパークラス コンストラクターを明示的に呼び出す必要があります。

カスタム コンストラクターのより詳細な例例外:

class ValidationError(Exception):
    def __init__(self, message, errors):
        super().__init__(message)
        self.errors = errors

この例では、ValidationError 例外はメッセージとエラー ディクショナリを次のように受け取ります。引数。エラー辞書には、エラーに関する追加情報を含めることができます。例外がキャッチされたコード内でこの情報にアクセスすることは、次のように簡単になりました。

try:
    # Code that may throw a ValidationError
except ValidationError as e:
    print(f"Error: {e.message}")
    print(f"Errors: {e.errors}")

__init__ と __str__ をオーバーライドするのは入力が多いように思えるかもしれませんが、これによりすべての Python バージョンとの互換性が保証され、一貫したメソッドが提供されます。例外データへのアクセス

以上が最新の Python でカスタム例外を効果的に作成および処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。