Haruchunのブログ

大学生の'春'のお勉強の備忘録

【Python】㉓例外処理

f:id:Haruchun:20200518190316j:plain

 

始めに

前回までは、オブジェクト指向プログラミングについて学んでいきました。

今回は、例外処理について学んでいきましょう。

 

前回の記事はこちら

haruchun.hatenablog.com

 

 

 

例外とは

例外はプログラムの実行中に起こるエラーです。

例外が発生すると、プログラムはエラーメッセージを表示して終了してしまいます。

ただし、例外処理を記述しておけば、エラー発生後もプログラムの実行を継続をする事ができます。

 

 

 

例外処理の書き方

例外処理は以下のようなtry文で以下のように書きます。

----------

try :

    処理A

except 例外名 :

    処理B

----------

 

上記では、最初にtry節の処理Aを行います。

処理Aの実行中にエラーが発生した場合、処理Aの実行を中断し、エラー内容に合わせた例外(例外インスタンス)を発信します。

exceptに続けて、対処したい例外名(例外クラス名)を記述します。

もし発生した例外がexcept節の例外名に一致していたら、処理Bを実行します。

 

except節は複数並べることができます。

発生した例外がどのexcept節の例外名とも一致しない場合には、エラーメッセージを表示してプログラムは終了します。

 

例➀例外処理

例外処理を確認するために、リストに格納されたデータの合計を求めることとします。

このリストの中に、'1','2'だけの数値に変換できる文字列だけで無く、'three'という数値に変換できない文字列が混ざっています。

<try1.py>

f:id:Haruchun:20200518100608p:plain

上記のプログラムを実行すると、以下のような結果が得られます。

 

ValueError: invelid literal for int() with base 10: 'three'

 

これは、プログラムの4行目でint関数を用いて、'three'という文字列を数値に変換しようとしたことが例外の原因です。

 

そのため、以下のように書き換えます。

<try2.py>

f:id:Haruchun:20200518101941p:plain

except節には何かしらの文を書く必要があるため、pass文を使用します。

このプログラムを実行すると、数値に変換する事ができない'three'以外の1,2,4を合計した7を返します。

 

 

 

else節とfinally節

try節ではexcept節だけではなく、else節やfinally節も書くことが可能です。

else節やfinally節は省略が可能なので、必要なときだけ使うことができ、以下のように表わします。

----------

try :

    処理A

except 例外名 :

    処理B

else :

    処理C

finally :

    処理D

----------

 

例②else節とfinally節

else節やfinally節の動作を確認するため、以下のプログラムを実行します。

f:id:Haruchun:20200518104722p:plain

上記のプログラムでは、例外が発生しないため、例外は発生しません。

そのため、try、else、finallyの順に実行されます。

 

 

 

最後に

今回は、例外処理について学んでいきました。

 

少しずつプログラミングを進めていると、エラーについても詳しくなりますよね。

エラーと仲良くなりつつお勉強を頑張りたいと思います。