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

Pythonで例外に変数を渡す方法をわかりやすく解説

Pythonでは、独自の情報を持たせた例外を作成し、その例外オブジェクトに変数を渡すことができます。これにより、エラー発生時の状況や詳細なメッセージを柔軟に扱えるようになります。

ここでは、組み込みの Exception クラスを継承したカスタム例外 ExampleException を定義し、__init__ メソッドで引数を受け取る方法を紹介します。そして、try-except ブロックを使って例外を発生させ(raise)、変数を例外に渡します。

コード例

class ExampleException(Exception):
    def __init__(self, foo):
        self.foo = foo

try:
    raise ExampleException("Bar!")
except ExampleException as e:
    print(e.foo)

実行結果

Bar!

コードの解説

1. カスタム例外クラスの定義

ExampleException は基底クラスである Exception を継承しています。コンストラクタ __init__ の中で引数 foo を受け取り、self.foo としてインスタンス属性に保存しています。この属性が、後から例外オブジェクト経由で参照できるデータになります。

2. 例外の発生と変数の受け渡し

try ブロック内で raise ExampleException("Bar!") を呼び出すことで、文字列 "Bar!" を引数として例外が発生します。この値が __init__foo に渡され、例外オブジェクトに格納されます。

3. exceptブロックでの値の取得

except ExampleException as e によって発生した例外オブジェクトを変数 e で受け取り、e.foo とすることで、例外に渡された変数の値を出力できます。

応用:複数の変数を渡す場合

__init__ の引数を増やせば、複数の情報を例外に持たせることも可能です。

class ValidationError(Exception):
    def __init__(self, field, message):
        self.field = field
        self.message = message
        super().__init__(f"{field}: {message}")

try:
    raise ValidationError("email", "形式が正しくありません")
except ValidationError as e:
    print(f"フィールド: {e.field}")
    print(f"詳細: {e.message}")

このように、カスタム例外に変数を持たせることで、エラー処理の際により具体的な情報を取得でき、デバッグやログ出力にも役立ちます。

  1. Pythonのpass文とは?使い方を徹底解説

    Pythonのpass文は、プレースホルダー(置き場所)として機能するキーワードです。for文やif文などの空のコードブロックに記述することで、構文エラーを防ぐことができます。Pythonは、pass文が書かれた部分を「空(何もしない)」として認識します。クラスや関数、処理の中にプレースホルダーを入れたい場面に出くわすことがあります。例えば、大規模なプログラムを書いていてforループを組み込みたいけれど、先に書くべき別のコードがあるため、まだループの中身を実装できないといったケースです。そんなときに役立つのがPythonのpass文です。pass文は、関数・クラス・ループなどのコードブロックを

  2. PythonのMatplotlibでplt.title()に変数を組み込む方法

    PythonのMatplotlibでplt.title()に変数を組み込みたい場合、いくつかの簡単なステップで実現できます。ここでは、変数numの値をグラフのタイトルに動的に反映させる方法を解説します。 実装の手順 numpyを使ってxとyのデータポイントを作成します。変数numを用いてyの値を計算し、この値をタイトルに設定します。 plot()メソッドを使って、xとyのデータポイントを赤色(c=red)でプロットします。 曲線のタイトルに変数numを含めて設定します。文字列フォーマット(%記法やf文字列)を活用することで、変数の値をタイトルに埋め込めます。 図を画面に表示するには、show