【ヤギでもわかるPython入門】例外処理

ヤギでもわかるPython入門
スポンサーリンク
読了時間 挨拶

記事は約 4 分で読めます。

くろやぎ
くろやぎ

みなさん、こんにちは!
くろやぎ(kuroyagikuncom)です。
よろしければ、Twitterの方にも遊びに来てください。

今回は、Pythonでの例外処理について解説します。よろしくお願いします。

スポンサーリンク

Pythonにおける例外処理 try except finally

Pythonにおける例外処理を理解するために次のスクリプトを実行します。

def exception_test(num1, num2):
    print('▼▼▼▼▼')
    try:
        result = num1 + num2
        print(result)
    except:
        print('計算できません')
    finally:
        print('▲▲▲▲▲')

if __name__=='__main__':
    # try
    exception_test(1, 2)
    # except
    exception_test(1, '2')

関数が呼び出されると、try以下のブロックが処理されます。 その処理中にエラーが発生した場合はexcept以下のブロックの処理に移ります。最後のfinallyは、エラーがあろうがなかろうが必ず実行されます。
1回目の関数呼び出しでは、処理中に例外(エラー)が発生しないのでexcept以下の処理は実行されません。2回目の関数呼び出しでは、処理中にエラーが発生するのでexcept以下の処理が実行されます。

ちなみにですが、関数の定義は以下のように記述します。

構文
def 関数名(引数1, 引数2, ...):
    処理

Pythonのraise

自作でクラスを作った際などに、エラーが発生したことを外部に伝えたい場合があります。そのためには、raise文を使ってエラーを発生させる必要があります。

def exception_test(num1, num2):
    print('▼▼▼▼▼')
    try:
        result = num1 + num2
        print(result)
    except:
        print('計算できません')
        raise
    finally:
        print('▲▲▲▲▲')

if __name__=='__main__':
    try:
        exception_test(1, 2)
        exception_test(1, '2')
    except:
        print('エラー')

exception_test関数でエラーが発生すると、except以下のブロックの処理が実行されるので、raise文により呼び出し元のtryへエラーを伝えます。raiseをコメントアウトした際の挙動も確認してみてください。

Pythonでエラー内容(スタックトレース)の取得

スクリプトを実行している際中にエラーが発生すると、例外内容(スタックトレース)が標準出力へ出力されます。このスタックトレースは、プログラム側で取得することができます。

import traceback

def exception_test(num1, num2):
    print('▼▼▼▼▼')
    try:
        result = num1 + num2
        print(result)
    except:
        print('計算できません')
        raise
    finally:
        print('▲▲▲▲▲')

if __name__=='__main__':
    try:
        exception_test(1, 2)
        exception_test(1, '2')
    except:
        print('▼▼▼▼▼▼▼▼▼▼')
        print(traceback.format_exc(), end='')
        print('▲▲▲▲▲▲▲▲▲▲')

まとめ

いかがでしたか?
今回学んだことをまとめておきますね。

  • Pythonにおける例外処理の基本
  • スタックトレース(エラー内容)の取得

これで「ヤギでもわかるPython入門」の解説は終了です。最後までお疲れ様でした。

コメント

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