ray88’s diary

お仕事で困ったとき用の自分用の覚書

Python 例外情報を調べる except as

exceptブロックが実行される際にasキーワードで名前を指定すると、例外をその名前の変数に一時的に保管できる
この変数はtry文が終わると破棄されるのでtry文の外で値を使いたい場合は別の変数に代入する必要がある

※Exceptionクラスを継承した例外オブジェクト
 エラーの種類Nいよって例外オブジェクトを作るクラスが異なるが、ValueErrorクラスはValueError>Exception>BasicExceptionのようにクラスを継承している。
 一般的な実行エラーはExceptionクラスを継承しているので、except Exception:で全ての例外を処理できる

# 例外に名前を付けて情報を調べる
try:
        実行を試すステートメント
except 例外1 as 名前1:
        例外1に対応するステートメント
except 例外2 as 名前2:
        例外2に対応するステートメント
#例外になったら、エラー情報を表示して処理を続行する
sum = 7600
while True:
        num = input("何人ですか?(qで終了)")
        if num == "q":
                print("終了しました")
                break
        #例外を処理する
        try:
                price = round(sum/int(num))
        #例外オブジェクトをerrorで参照できるようにする
        except Exception as error:
                print("エラーになりました")
                #エラー情報を出力する
                print(error)
        #例外が発生しなかったときはelseブロックが実行されます
        else:
                if price < 0:
                        #マイナスの場合は無視
                        continue
                print("1人当たりの金額",price)                

出力例