目次
Pythonで例外処理を実施する
Pythonでデータの処理を実施する際、例外(エラー)が発生した場合はプログラムが中断されてしまいます
自動化で回している処理でも途中で止まってしまうと、そのあとのコードが実行されません
例外処理を実施することにより、例外発生時に適切な処理を行い、プログラムを止めることなく実行することができます
例外処理のtry except
Pythonで例外処理を実施するためにはtryとexceptを組み合わせて実行します
イメージとしてはtryは条件適応を「やってみる」を表し、exceptは「ダメだったとき」を表します
例外(エラー)において頻出する「ゼロで割り算」をするときの処理を試してみましょう
エラーが発生するコード
defを利用して割り算を実施する関数を作成します
まずはエラーが発生してしまう、単純なコードを記述します
def func(x,y):
print(x/y)
この関数の(x,y)に対して、「1,2」「2,0」「3,5」を代入して割り算を実施します
func(1,2)
func(2,0)
func(3,5)
1番目の「1÷2=0.5」の計算式は実行されましたが、2番目でエラーが発生しました
ZeroDivisionErrorは割り算を実施する際、「除数がゼロ」の場合に出るエラーです
そして途中でプログラムが止まってしまったため、3番目の「3÷5」が実行されていません
try exceptを実行したコード
そこで前述した方法で例外処理を実施することで、3つの割り算を全て算出してみます
tryに対して「x÷y」の例外が発生する処理を記述します
exceptに対しては「x÷y」でエラーが発生した場合の、エラー文言を記述します
def func(x,y):
try:
print(x/y)
except:
print('ゼロで割ろうとしています')
func(1,2)
func(2,0)
func(3,5)
無事、3つのコードが実行されました
エラーが出てしまう「2÷0」の場合には指定した文言が表示されました
関数の作り方に関してはこちらの記事をご覧ください
【Python】関数で独自の計算式を作る方法とは?|def例外ごとに異なる分岐
例外処理は、例外(エラー)の種類に応じて出し分けることができます
exceptの後に続けて例外の種類(クラス)を記述することで、その場合の処理を分岐させましょう
例外クラス(エラー内容)に関しては、前述したZeroDivisionErrorの「ゼロで割り算しようとした場合」のエラーや
TypeErrorの「データ型が異なっていた場合」のエラーなど様々存在しています
「2÷0」のゼロでの割り算と、「データなし」の文字列での割り算を関数に適応させてみます
def func(x,y):
try:
print(x/y)
except ZeroDivisionError:
print('ゼロで割ろうとしています')
except TypeError:
print('数値型ではありません')
func(1,2)
func(2,0)
func('データなし',5)
複数の例外の同じ処理を実施
複数の例外(エラー)に対して、全く同じ処理を実施したい場合は、exceptに続けて複数の例外クラス(ZeroDivisionError,TypeError)を記述しましょう
def func(x,y):
try:
print(x/y)
except (ZeroDivisionError,TypeError):
print('エラーが出ています')
func(1,2)
func(2,0)
func('データなし',5)
exceptに続けて「どの例外も指定しない」ことで、全ての例外に対して同じ処理を実施することができます
まとめ
今回は例外処理を実施することにより、例外発生時に適切な処理を行い、プログラムを止めることなく実行する方法をご紹介してきました
tryとexceptの簡単なコードで出し分けができるので、ぜひ試してみてください
【Python】関数で独自の計算式を作る方法とは?|def