python中的异常处理或仅sys.exit

python中的异常处理或仅sys.exit,python,exception,Python,Exception,Im根据用户输入验证日期,无法确定如何验证大于今天日期的日期 def validate(date_text): if datetime.datetime.strptime(date_text, '%Y-%m-%d') > datetime.datetime.now(): print "Enter date greater than today's date" sys.exit() 是这样做的,还是我们可以做异常处理?如果你想退出你

Im根据用户输入验证日期,无法确定如何验证大于今天日期的日期

def validate(date_text):
       if datetime.datetime.strptime(date_text, '%Y-%m-%d') > datetime.datetime.now():
           print "Enter date greater than today's date"
           sys.exit()

是这样做的,还是我们可以做异常处理?如果你想退出你的程序,那就去做。如果您想引发异常,也可以这样做:

def validate(date_text):
   if datetime.datetime.strptime(date_text, '%Y-%m-%d') > datetime.datetime.now():
       raise ValueError(Enter date greater than today's date")
可能有更多类似的例外情况。如果要区分它,应创建新的异常类:

class DateTooGreatError(BaseException):
    pass
要使用新的异常,请执行以下操作:

def validate(date_text):
   if datetime.datetime.strptime(date_text, '%Y-%m-%d') > datetime.datetime.now():
       raise DateTooGreatError(Enter date greater than today's date")
然后,您可以正常处理它:

try:
    validate(date_text)
except DateTooGreatError:
    ...
except DateIsStillTwentyYearsToGoError:
    ...
except:
    ...

在看到了毫无疑问是一个更大的程序的一小部分之后,我可以毫无疑问地说,你的问题的答案是。。。也许吧。你能告诉我怎么做吗?如果日期格式不正确,我还有一个例外。我能同时处理ValueError类型的两个异常吗?非常感谢您的快速响应。这对我很有帮助。结果是,如果日期没有得到验证,我就不得不退出程序。所以我必须选择sys。exit@alKid字体对不起,我来晚了一点。捕获异常并从中退出,还是像问题中那样打印一条消息并退出更好?这取决于您。。我认为后者更好。如果你不想做任何事情,为什么要捕获异常?@alKid:我有很多条件要检查,如果是异常处理,那么我可以打印异常抛出的错误消息并退出,否则我必须用if语句记录每个条件的打印消息,然后退出。但是我不知道哪一个是有效的