setsuki  2021/10/09更新

【ぱいそん】はじめました。忘備録⑦例外処理【Python】


まだまだ動画で勉強中 !


コード書きつつ、調べつつ、動画みてるので、オーバーフローしそう……。

エラーを自分で発生させる例外処理

想定外のエラーが起きた場合に自分でエラーを発生させることができます。

def calc_tax(i):
    if type(i) is not int:
        raise Exception("数字で入力してね")
    return i*1.1
    
calc_tax(1)
calc_tax("1")

この場合、文字列が入力された時にエラーでプログラムが終了します。

表示されるエラーは以下のようになります。

Traceback (most recent call last):

  File "File0", line 7, in <module>

   calc_tax("1")

  File "File0", line 3, in calc_tax

   raise Exception("数字で入力してね")

Exception: 数字で入力してね

※paiza.ioで実行した場合

例外をキャッチするtry

def calc_tax(i):
    if type(i) is not int:
        raise Exception("数字で入力してね")
    return i*1.1
try:
    #tryの中で発生した例外はキャッチされる
    calc_tax("1") #例外発生! exceptへ飛ばされる
    calc_tax(1) #この行は実行されない

except Exception as e:#例外はeとしてここに来る
    print(e) #エラーメッセージを表示する
print("この行は実行される")

tryとexceptの間には例外が発生するかもしれない処理を書きます。

tryの中で、例外が発生すると、exceptに飛ばされます。

このコードの場合、calk_tacが呼び出されて、iに文字列の1が代入されます。

次に、type(i)がint型かを確認し、この場合は、str型のため、エラーが発生します。

この時点で、すぐに、exceptの行に飛ばされて、eの中にエラーが格納されます。

そして、次の行で、エラーメッセージである「数字で入力してね」が出力されます。

そして、try-exceptの中の処理が終わると、次の行の処理が実行され、「この行は実行される」が出力されます。

こうすることで、例外が発生したとしても、処理を継続できるようになります。

 



タイトルとURLをコピーしました