首页 > 解决方案 > 多次尝试...除了块语句引发另一个错误

问题描述

我的多次尝试...except 块不起作用,我不知道为什么:

from datetime import datetime

class Format_DateTime:
    def __init__(self):
        pass

    def __call__(self, text):
        text = text.replace(".", "-")
        text = text.replace("/", "-")
        text = text.replace(" ", "-")
        try: output = datetime.strptime(text, '%d-%m-%Y')
        except ValueError: output = datetime.strptime(text, '%d-%b-%Y')
        except: output = "Please input date as follows: day mth year, e.g. 07 Mar 2020"
        return output

'''EXAMPLE USAGE:'''
if __name__ == "__main__":
    format_datetime = Format_DateTime()
    print(format_datetime('8 04 20'))

上面的代码是为了抛出我的错误消息,但又抛出了另一个 ValueError异常,我该如何让它抛出我的消息?

标签: pythontry-catch

解决方案


每个日期转换尝试都需要自己的异常处理程序。最好避免将 try/except 代码放在一行(它读起来更好,并且更容易在调试器中单步执行)但是对于这个问题,你必须

def __call__(self, text):
    text = text.replace(".", "-")
    text = text.replace("/", "-")
    text = text.replace(" ", "-")
    try: 
        output = datetime.strptime(text, '%d-%m-%Y')
    except ValueError: 
        try:
            output = datetime.strptime(text, '%d-%b-%Y')
        except ValueError:
            output = "Please input date as follows: day mth year, e.g. 07 Mar 2020"
    return output

推荐阅读