Cameron Laird wrote:

> Guys, I try--I try *hard*--to accept the BetterToAskForgiveness
> gospel, but this situation illustrates the discomfort I consistently
> feel:  how do I know that the NameError means VARIABLE didn't resolve,
> rather than that it did, but that evaluation of commands.VARIABLE()
> itself didn't throw a NameError?  My usual answer:  umm, unless I go
> to efforts to prevent it, I *don't* know that didn't happen.

two notes:

1) getattr() raises an AttributeError if the attribute doesn't exist, not a 
NameError.

2) as you point out, doing too much inside a single try/except often results in 
hard-
to-find errors and confusing error messages.  the try-except-else pattern comes 
in
handy in cases like this:

    try:
        f = getattr(commands, name)
    except AttributeError:
        print "command", name, "not known"
    else:
        f()

</F> 



-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to