#11 Pythonで学ぶエラーハンドリングの基本

プログラムの実行中に起きる想定外の問題に対処する仕組みを「エラーハンドリング」と呼びます。この記事では、Pythonにおけるエラーハンドリングの基本と、独自の機能を解説します。

try・exceptの基本

Pythonではtryとexceptを使ってエラーに対処します。

try:
    age = int(input("年齢を入力してください: "))
except ValueError:
    print("数字を入力してください")

tryの中でエラーが起きると、そこで処理が中断され、対応するexceptの中身が実行されます。

エラーの種類を指定する

PythonのエラーにはValueErrorやZeroDivisionErrorなど、種類ごとに名前が付いています。exceptにその名前を書くことで、特定の種類のエラーだけを捕まえられます。

try:
    result = 10 / int(input("割る数を入力: "))
except ValueError:
    print("数字を入力してください")
except ZeroDivisionError:
    print("0では割れません")

elseで正常時だけ実行する

tryブロックがエラーなく完了した場合だけ実行したい処理は、elseに書きます。

try:
    age = int(input("年齢: "))
except ValueError:
    print("数字を入力してください")
else:
    print(f"あなたは{age}歳ですね")

finallyという必ず実行される部分

エラーが起きても起きなくても必ず実行したい処理は、finallyに書きます。

try:
    f = open("data.txt")
finally:
    f.close()

ファイルを閉じるなど、後片付けの処理でよく使われます。

Pythonならではの注意点

except:とだけ書いて種類を指定しないと、想定していないあらゆるエラーまで握りつぶしてしまい、不具合の発見が遅れる原因になります。基本的には、捕まえたいエラーの種類を具体的に指定することが推奨されています。ファイルを扱う際はfinallyで毎回close()を書く代わりに、以前の記事で触れたwith文を使うと、後片付けを自動化できてより安全です。

独自のエラーを発生させる

自分でエラー状態を作り出したい場合はraiseを使います。

def set_age(age):
    if age < 0:
        raise ValueError("年齢は0以上である必要があります")

既存のエラーの種類で意味が合わない場合は、Exceptionを継承した独自のエラークラスを定義することもできます。

まとめ

Pythonのエラーハンドリングはtry・except・else・finallyが基本です。raiseによる独自エラーの発生も含め、エラーの種類を具体的に指定して、必要な範囲だけ対処するようにしましょう。


本ページはプロモーションを含みます。

参考書籍(PR)

Pythonをもっと学びたい方には「スッキリわかるPython入門 第2版」がおすすめです。


PR

コードを書かずに自動化したい方へ

「学んだけど自分の作業に組み込む時間がない」という方向けに、ダブルクリックで動く Windows専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。

コメント

このブログの人気の投稿

#25 Rustで学ぶAI API(ChatGPT等)の呼び出し方の基本

#8 C++で学ぶ文字列操作の基本

#16 TypeScriptで学ぶ辞書型(マップ)の基本