Daiyue Weng wrote: > Hi, I have seen code using try_except with no exceptions, > > from dateutil import parser > > try: > from_date = datetime.datetime.strptime(parameters['from_date'], > '%Y-%m-%d %H:%M:%S.%f') > to_date = datetime.datetime.strptime(parameters['to_date'], > '%Y-%m-%d %H:%M:%S.%f') > except: > from_date = parser.parse(parameters['from_date']) > to_date = parser.parse(parameters['to_date']) > > > I know that such try-catch usage is generally a bad practice, since it > can't locate the root of the exceptions. > > I am wondering how to correct the code above (what it tries to do is > basically trying one processing block, if not working, running another > block of code in except). Also a warning 'Too broad exception clause' > will be generated.
Is it intentional that both times have to be parsed by the same function? If not I'd do def parse_date(datestr): try: return datetime.datetime.strptime(datestr, '%Y-%m-%d %H:%M:%S.%f') except ValueError: return dateutil.parser.parse(datestr) from_date = parse_date(parameters['from_date']) to_date = parse_date(parameters['to_date']) Exceptions other than ValueError are probably hints that the program logic is flawed, so I'd rather have them bubble up. -- https://mail.python.org/mailman/listinfo/python-list