Не работает исключение

Код выводит возраст:

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}))
→ Ссылка