при использовании 'поднимать' для определенного пользователем исключения, оно не работает при 'попытке' - PullRequest
0 голосов
/ 28 апреля 2020

нужна ваша помощь! Я определил новое исключение под названием «UnderAge» (просто проверяю, не достиг ли человек возрастного ограничения). Странно то, что когда я использую «поднять UnderAge как e ...», он не работает в сегменте «попробовать». работает только исключение. Вот код:

class UnderAge(Exception):
    def __init__(self, name, age):
        self._name = name
        self._age = age
    def __str__(self):
        return "the age %s is under 18 yo" % self._age
    def get_age(self):
        return self._age
def send_invitation(name, age):
    try:
        if int(age) < 18:
            raise UnderAge(name, age)
        else:
            print("You should send an invitation to " + name)
    except UnderAge as e:
        print("Age must be above 18 but now age is  %s." % e.get_age())

def main():
    send_invitation("miri", 16)

if __name__ == "__main__":
    main()

----- При его запуске я получаю только: C: \ Python \ Python38-32 \ python .exe "C: / Users / mikie / Documents / Pyton Programs / Next.py Course / Targil_3.3.2a.py "Возраст должен быть старше 18 лет, но сейчас возраст - 16.

Процесс завершен с кодом выхода 0

- --- я также должен увидеть вывод, указывающий на UnderAge и его соответствующую str , которую я изменил. Пожалуйста, помогите мне, ребята :-) спасибо, Майк

1 Ответ

0 голосов
/ 29 апреля 2020

ложная тревога - это нормальное поведение рейза. Настраиваемое исключение должно выдаваться только в том случае, если в коде после 'try' не определено исключение. Кроме того, строка, которая переопределяет __str__, может быть вызвана e. str .

...