Не работает исключение
Код выводит возраст:
def retrieve_age(person):
try:
return int(person["age"])
except ValueError:
print("Вы некорректно ввевили возраст")
except int(person["age"])<=0:
print("Вы ввeли отрицательный возраст")
print(retrieve_age({"name" : "Max", "age": -5}))
Вопрос:
except int(person["age"])<=0:
print("Вы ввeли отрицательный возраст")
Это не работает. Как создать пользовательское исключение против отрицательного ввода?
Ответы (2 шт):
Автор решения: Vova Shkurletov
→ Ссылка
Просто условный оператор нельзя?:
if int(person["age"])<=0:
print("Вы ввeли отрицательный возраст")
Автор решения: n1tr0xs
→ Ссылка
Вот так можно:
class SubZeroError(Exception):
def __init__(self):
super().__init__()
class MyInt(int):
def __init__(self, num):
self.num = int(num)
if self.num<=0:
raise SubZeroError
super().__init__()
def retrieve_age(person):
age = person["age"]
try:
age = MyInt(age)
return age
except ValueError:
return "Вы некорректно ввевили возраст"
except SubZeroError:
return "Вы ввeли отрицательный возраст"
print(retrieve_age({"name" : "Max", "age": -5}))