Pythonで自作例外をスローする

Pythonで例外を作成するには、Exceptionクラスを継承して新しい例外クラスを作成する必要があります。例外クラスは通常、プログラムが期待する動作を妨げるエラーを示すために使用されます。

例えば、以下のように、Exceptionクラスを継承して新しい例外クラスを作成することができます。

class MyException(Exception):
    pass

この例では、MyExceptionという新しい例外クラスを作成しています。この例外クラスは、Exceptionクラスを継承しているため、すべての例外クラスの基本クラスであるExceptionクラスの機能を備えています。

Pythonで例外をスローするには、raise文を使用します。raise文を使用することで、自分で定義した例外をスローすることができます。以下は、例外をスローするPythonのコードの例です。

# 例外をスローする関数
def divide(a, b):
    if b == 0:
        raise MyException("division by zero")
    else:
        return a / b

# 例外を捕捉する部分
try:
    result = divide(10, 0)
except MyException as e:
    print("Error:", e)
else:
    print("Result:", result)

この例では、divide関数内でゼロ除算が発生した場合に、ZeroDivisionErrorをスローするようになっています。try-except文を使うことで、関数の呼び出しを保護しています。関数内で例外がスローされた場合、exceptブロックが実行されます。例外オブジェクトには、スローされた例外の詳細な情報が含まれています。

また、Pythonには標準で定義された例外もあります。例えば、IndexErrorやTypeErrorなどがあります。raise文でこれらの例外をスローすることもできます。例えば、以下のようなコードになります。

# IndexErrorをスローする例
lst = [1, 2, 3]
try:
    x = lst[3]
except IndexError as e:
    print("Error:", e)
else:
    print("x:", x)

この例では、リストの範囲外のインデックスを指定しているため、IndexErrorがスローされます。