【Python】try…exceptを二重にしたらどうなるのか

エラー制御してたらtry…exceptを二重にした時どんな挙動を示すのかふと疑問に思ったのでやってみました

テストソースと結果

こんなものは調べる必要もなく、とにかくやってみればいいんです!

最低限のソースで二重にしたtry…exceptを作ってやってみます

try:
    # 内側でエラーを発生させる
    print("確認1")
    try:
        print("確認2")
        raise Exception("内側エラー")
    except Exception as e:
        print(e)
    else:
        print("正常1")

    # 外側でエラーを発生させる
    print("確認3")
    raise Exception("外側エラー")
except Exception as e:
    print(e)
else:
    print("正常2")


'''
出力結果

確認1
確認2
内側エラー
確認3
外側エラー
'''

下部の出力結果の通りではありますが、ネストした場合はちゃんと内側のtryだけで完結して外側のtryには影響ありませんでした

つまり全体をtryの中に入れつつ、個別エラー検知用のtryを使っても問題ないってこと

VSCodeのデバックで実行経路を確認

視覚的に確認した方がわかりやすいと思うのでgifも貼っておきます

あとがき

想定通りと言うか希望通りの動きだったので一安心

あまりネストし過ぎると可読性が悪くなりそうだしほどほどに・・・

コメント

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