多次尝试...除了块语句引发另一个错误

时间:2020-05-08 22:07:41

标签: python try-catch

我的多次try ... 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异常,我该如何使其抛出我的消息?

1 个答案:

答案 0 :(得分:0)

每次日期转换尝试都需要其自己的异常处理程序。最好避免无论如何将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