#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専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。
コメント
コメントを投稿