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):
        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.


Reply via email to