在Python中引发异常类

时间:2020-10-29 01:24:42

标签: python

在本练习中,当特定功能中不满足条件时,将引发手动异常。特别是,我们将把出生年份转换为年龄。

规格 在笔记本中新建一个单元格,键入以下功能

 import datetime

 class InvalidAgeError(Exception):
    pass

 def get_age(birthyear):
    age = datetime.datetime.now().year - birthyear
    return age

添加检查该人是否具有有效(0或更大)的检查 如果年龄无效,则引发InvalidAgeError 预期产量

>>> get_age(2099)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
__main__.InvalidAgeError

我的代码如下,但是它在加注行上显示错误,我如何获得预期的输出?

import datetime
class InvalidAgeError(Exception):
    pass
    
def get_age(birthyear):
    age = datetime.datetime.now().year - birthyear
    if age >=0:
        return age
    else: 
        raise InvalidAgeError

get_age (2099)

1 个答案:

答案 0 :(得分:1)

如评论中所述,您的代码正确。我猜您希望看到显示错误原因的错误消息。这是它的代码。

def get_age(birthyear):
    age = datetime.datetime.now().year - birthyear
    if age >=0:
        return age
    else: 
        raise InvalidAgeError(f'InvalidAgeError: the birthyear {birthyear} exceeds the current year ({datetime.datetime.now().year})')

请随时按照您认为合适的方式修改Exception消息。