【Python】エラー時の処理を定義する方法【例外処理】

Python

この記事では、Pythonの例外処理の使い方について解説します。

例外処理の基本

例外処理を使うことで、エラーが起きた際の処理を指定することができます。

書式

例外処理はtryexceptを使って以下のように記述します。

try:
    # 処理
except:
    # エラー時の処理

try内でエラーが発生したらexceptが処理されます。

サンプル

以下のコードは、valueをintでキャストしていますが、valueは文字列なのでキャスト時にエラーが発生します。

value = 'one'

try:
    value = int(value)
except:
    print('valueはintでキャストできません')

実行結果

valueはintでキャストできません

発生したエラーの型で処理を変える

exceptにエラーの型を指定することで処理を分けることができます。

value = 'one'

try:
    value = int(value)
except ValueError:             # ValueErrorを指定
    print('ValueErrorが発生')
except:
    print('その他エラーが発生')

実行結果

ValueErrorが発生

エラーメッセージを受け取る

以下のようにasを使うことでエラーの詳細を受け取ることができます。

num = 'one'

try:
    int(num)
except ValueError as e:
    print(e)

実行結果

invalid literal for int() with base 10: 'one'

最後の処理 [finally]

finallyを記述することで例外処理の最後に実行したいコードを記述します。finallyはエラーが発生してもしなくても処理されます。

value = 'one'

try:
    value = int(value)
except:
    print('エラー発生')
finally:
    print('例外処理終了')

実行結果

エラー発生
例外処理終了

エラーを投げる [raise]

raiseを使うことでエラーを自発的に発生させることができます。
以下のコードはfunc関数を作成し、引数に0を渡されるとraiesが処理されてエラーが発生します。

def func(num: int):
    if num == 0:
        raise


try:
    func(0)
except:
    print('func関数でエラー発生')

実行結果

func関数でエラー発生

エラーの型とメッセージを指定する

raiseにエラーの型を指定することで発生させるエラーの型を指定できます。また、引数に文字列を指定することでエラーメッセージを指定できます。

def func(num: int):
    if num == 0:
        raise ValueError('エラーが発生!')


try:
    func(0)
except ValueError as e:
    print(e)

実行結果

エラーが発生!
タイトルとURLをコピーしました