P132
●初期化されていない変数bを使ったエラー(NameError)
xa = 10a / b
●ゼロで値を割った(ZeroDivisionError)
xb = 0a / b
●"100個"を整数値に変換できなかった(ValueError)
xnum = int("100個")
●空のリストから値を取り出そうとした(IndexError)
xnums = []nums.pop()
●開こうとしたファイルが見つからなかった(FileNotFoundError)
xfilein = open("myfile", "r")
==============================================================
p133 例外処理を取り込む try ~ except
書式 例外処理
try : 例外処理が発生する可能性のある処理 except : 例外処理を受けて実行する処理
p134
xwhile True :num = input("何個ですか?(qで終了)")if num == "q":print("終了しました。")break# 入力された値を整数に変換できない場合例外処理を行うtry :price = 120 * int(num)print("金額", price)except :print("エラーです。正しい数値を入れてください。")
書式 例外処理
try : 例外が発生する可能性がある処理 exept :
例外を受けて実行する処理
finally : try文を抜ける前に実行する処理
p135
xnum = 0try :value = 120 / numprint(value)except :print("エラーになりました。")finally :print("計算終わり。")
p136
例外の種類を振り分ける
書式 例外によって対応を振り分ける1
try : 例外が発生する可能性がある処理 except 例外1 : 例外1に対応する例外処理 except 例外2 : 例外2に対応する例外処理 except: 例外1、例外2のどちらでもない例外の処理
書式 例外によって対応を振り分ける2
try : 例外が発生する可能性がある処理 except (例外1、例外2) : 例外1、例外2に対応する処理 except (例外3、例外4) : 例外3、例外4に対応する処理 except: 例外1~4のではない例外の処理
p137
xsum = 7600while True :num = input("何人ですか?(qで終了)")if num == "q":print("終了しました。")break# 例外を振り分けて例外処理を行うtry :price = round(sum / int(num))if price < 0 :# マイナスの場合は無視continueprint("1人当たりの金額", price)except ValueError :print("数値を入れてください。")except ZeroDivisionError :print("0以外の数値を入力してください。")
p138
書式 elseがあるtry文 try : 例外が発生する可能性がある処理 except 例外1 : 例外1に対応する処理 except 例外2 : 例外2に対応する処理 else: 例外が発生しなかったときに実行する処理 finally : try文を抜ける前に必ず実行する処理
p139
例外情報を調べる except as
書式 例外に名前を付けて情報を調べる
try : 実行するステイトメント except 例外1 as 名前1: 例外1に対応するステートメント except 例外2 as 名前2: 例外2に対応するステートメント
p140
xsum = 7600while True :num = input("何人ですか?(qで終了)")if num == "q":print("終了しました。")break# 例外を処理するtry :price = round(sum / int(num))except Exception as error :print("エラーになりました。")print(error) # エラー情報を出力するelse :if price < 0 :# マイナスの場合は無視continueprint("1人当たりの金額", price)
==============================================