1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【python】try-except使っても次の処理走るから気をつけろ

Posted at

#備忘録です
エラー処理実装している時にすっかり頭から抜けていた知識の備忘録。

#内容
##try-exceptでエラー処理
基本の基本はこれ。
これを実行すると「エラーです!」ってちゃんとでる。

def main():
    try:
        a = 1 / 0
    except:
        print("エラーです!")

main()

出力結果:

>>エラーです!

頭から抜けていたのがこの部分。
exceptに入れば以降の処理はされないっしょー!って思ってたら違った。
冷静になればそりゃそうなんだけど、集中しててすっかり忘れていた。

def main():
    try:
        a = 1 / 0
    except:
        print("エラーです!")
    print("ここも処理されちゃう")
    print("だってまだmainの中だもん")

main()

出力結果:

>>エラーです!
>>ここも処理されちゃう
>>だってまだmainの中だもん

finallyがあっても同じ挙動。

def main():
    try:
        a = 1 / 0
    except:
        print("エラーです!")
    else:
        print("ここはelse")
    finally:
        print("ここはfinally?")
    print("ここも処理されちゃう")
    print("だってまだmainの中だもん")

main()

出力結果:

>>エラーです!
>>ここはfinally?
>>ここも処理されちゃう
>>だってまだmainの中だもん

多分もっと良いやり方あるんだろうけど、一旦こういうやり方で実装。

def main():
    try:
        do_main()
    except Exception as e:
        print("エラー:"+str(e))

def do_main():
    try:
        a = 1/0
    except:
        raise Exception("わっしょい")
    print("ここは処理される?")
    print("mainの中だけど大丈夫?")

main()  

出力結果:

>>エラー:わっしょい
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?