answer10_1_2.py

def input_age():
    age = int(input("年齢を入力して下さい:"))
    if age < 0:
        raise ValueError("マイナスの年齢は無しです")
    return age


try:
    age = input_age()
except ValueError:
    print("入力が不正です")
else:
    print(f"あなたは来年{age+1}歳です!")

# 章末問題 10章【1】(2)解答例
#
# input_ageの中で、負の数が入力されたら、
# ValueErrorを送出します(3〜4行目)。
# input_ageの呼び出しがtry節にあるので(9行目)、
# その呼び出しの最中に4行目のコードでValueErrorが
# 発生すると、8行目からのtry文がそれを捕捉し、
# 10行目の例外ハンドラが動きます。
#
# なおValueErrorのコンストラクタに与えた文字列
# 「マイナスの年齢は無しです」は、例外の情報に
# セットされますが、10行目からのハンドラでそれは
# 使われていないため、この文字列はどこにも現れません。