Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで独自の例外を定義する方法|ユーザー定義例外の作成と使い方

Pythonでは、標準の組み込み例外クラスを継承(派生)することで、自分だけのオリジナルな例外クラスを作成できます。これにより、エラーの内容に応じたより具体的で分かりやすい情報を扱えるようになります。

ユーザー定義例外の基本

ここでは、RuntimeError を基底クラスとした例を紹介します。RuntimeError を継承した新しいクラスを作成することで、例外を捕捉した際に、より詳細な情報を表示できるようになります。この手法は、アプリケーション固有のエラー状況を明確に伝えたい場合に非常に役立ちます。

まず、以下のように Networkerror クラスを定義します。

class Networkerror(RuntimeError):
    def __init__(self, arg):
        self.args = arg

このクラスでは、コンストラクタ(__init__)を受け取った引数をそのまま args 属性に格納しています。この args には、例外発生時のエラーメッセージなどの情報が保持されます。

例外の発生と捕捉

上記のようにクラスを定義すると、次のようにして例外を発生させ、捕捉することができます。

try:
    raise Networkerror("Bad hostname")
except Networkerror as e:
    print(e.args)

try ブロック内で raise 文によってユーザー定義例外が発生し、except ブロックでそれを捕捉します。変数 eNetworkerror クラスのインスタンスであり、e.args にアクセスすることで、例外発生時に渡されたメッセージ(この例では「Bad hostname」)を取得できます。

なお、上記のコードはPython 3の構文です。Python 3では except Networkerror as e: のように as キーワードを使って例外オブジェクトを受け取り、print() は関数形式で記述します。古いPython 2では except Networkerror, e:print e.args といった書き方が使われていましたが、現在はPython 3の構文を使用することが推奨されています。

まとめ

組み込み例外を継承して独自の例外クラスを作ることで、エラーの意味を明確にし、コードの可読性と保守性を高めることができます。特に大規模なプロジェクトやライブラリ開発では、用途に応じたカスタム例外を定義しておくと、エラーハンドリングが格段に行いやすくなります。

  1. Pythonの継承とは?単一継承と階層継承の基本をサンプルコードで解説

    本記事では、Python 3.xにおける継承(インヘリタンス)とクラスの拡張方法について詳しく解説します。 継承とは、現実世界のモノや概念の関係性を自然に表現できる、オブジェクト指向プログラミングの中核となる仕組みです。継承を活用すると、次のようなメリットが得られます。 再利用性:すでに書いたコードを流用でき、重複を削減できる 推移性:クラス間の関係を連鎖的に引き継げる 開発速度の向上:ゼロから書かずに済むため、短期間で開発できる 保守性・拡張性:既存クラスを壊さずに機能を追加しやすい 継承の5つの種類 Pythonの継承は、その構造によって主に以下の5種類に分類されます。 単一継承(

  2. Pythonの代表的な例外(Exception)の種類と発生原因をコード例付きで解説

    Pythonには、プログラムの中で頻繁に発生する代表的な例外がいくつか存在します。これらの例外は、プログラマが明示的に発生させる場合もあれば、Pythonインタプリタが暗黙的に検出して発生させる場合もあります。ここでは、特によく見かける主要な例外について、その発生条件と実際のコード例・実行結果を交えて詳しく解説します。 AssertionError(アサーションエラー) assert文の条件が偽(False)になった場合に発生する例外です。Pythonではコード内にassert文を記述でき、その条件は常に真であることが期待されます。条件が満たされなかった瞬間にAssertionErrorが送出