指定的尝试除了 datetime.date()

specified try except with datetime.date()

我试图从 datetime 模块中捕获不正确的月份和日期以及 date() 的负年份的异常,但是当我使用 ValueError 异常时,我无法具体说明。如何指定例外情况?

from datetime import datetime, date, timedelta



a = int(input('Year:'))
b = int(input('Month:'))
c = int(input('Day:'))

try:
    a_date = date(a, b, c)
    print(a_date.strftime("%d/%m/%Y"))
except ValueError:
    print('month must be in 1..12')

您无法区分异常 type,因为 datetime 库在 date() 对象创建时对所有值错误条件使用 ValueError。 您可以做的是从值错误本身打印错误消息或检查值错误的字符串。

try:
    a_date = date(a, b, c)
except ValueError as error:
    print(error)
try:
    a_date = date(a, b, c)
except ValueError as error:
    if 'month' in str(error):
        print('Invalid month')
    ...