【ぱいそん】はじめました。忘備録⑦例外処理【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の中の処理が終わると、次の行の処理が実行され、「この行は実行される」が出力されます。
こうすることで、例外が発生したとしても、処理を継続できるようになります。