Fwd: [ditrack commit] r839 - in src/trunk/DITrack: . Command

Vlad Skvortsov vss at 73rus.com
Mon Nov 20 09:57:02 PST 2006


Oleg Sharov wrote:

> +           if e in db.cfg.filters:
> +               f = db.cfg.filters[e]
> +           else:
> +               try:
> +                   f = DITrack.DB.Filter(e)
> +               except:
> +                   DITrack.Util.common.err("ERROR: '%s' is not 
> predefined filter or it contains syntax error" \
> +                       % e)
> +
>             filters.append(f)
>
>          for id, issue in db.issues():
>
> After my changes we have double error, and loss overt error about 
> undefined filter.
> As a user of system, I consider it's bad.But, as a programmer, I don't 
> know other solution
>
>
> Vlad, what's your opinion?

I think it should look somewhat like this:

try:
    f = DITrack.DB.Filter(e)
except FilterIsPredefinedError:
    # This looks like a predefined filter name.
    if e in db.cfg.filters:
        f = db.cfg.filters[e]
    else:
        error("Filter '%s' is not defined" % e)
except FilterSyntaxError:
    # Invalid filter syntax.
    error("Can't parse filter expression '%s'" % e)

The DITrack.DB.Filter.__init__() thus should be smart enough to raise 
two different exceptions. Makes sense?

-- 
Vlad Skvortsov, vss at 73rus.com, http://vss.73rus.com



More information about the Dev mailing list