[Python-Dev] Re: More informative error messages

Gerrit Holl gerrit at nl.linux.org
Wed Oct 8 10:52:09 EDT 2003


[I'm not a regular poster, so I'll introduce myself shortly: I am a
 first-year Physics student without CS knowledge, have learned
 programming with Python a few years ago]

Gregory Smith wrote:
> > At the time the TypeError is constructed it shouldn't add serious
> > overhead to check if its a method or a function and subtract 1
> > accordingly.

Guido van Rossum replied:
> You'd think so, eh?  Have you looked at the code?  Have you tried to
> come up with a patch?  Why do you think that in 13 years this hasn't
> been fixed if it's such a common complaint?

Would it be possible to have this code at IDE-level? E.g., is possible
for Idle to catch TypeError's and try to find out whether this is about
the number of arguments to a callable, and if so, try to find out whether
it is about a method or a function? This is of course a lot of overhead,
but since it is only for an interactive session, I think this is not a big
problem, or am I mistaken here?

Something like:
except TypeError, msg:
    if "takes exactly" in msg[0]: # something with tb_lasti?
        name = msg[0].split('(')[0]
        typ, val, tb = sys.exc_info()
        if name in tb.tb_frame.f_locals.keys():
            if 'instancemethod' in type(tb.tb_frame.f_locals[name]):
                # subtract 1
            else:
                # don't subtract 1
        else:
            # hmm, if it is a method, how do we find it?
        # etc.
    else:
        raise

It seems quite difficult to do so. It is certainly not always possible,
but is it worth the pain?
            
regards,
Gerrit Holl.

-- 
201. If he knock out the teeth of a freed man, he shall pay one-third
of a gold mina.
        -- 1780 BC, Hammurabi, Code of Law
--
Asperger Syndroom - een persoonlijke benadering:
	http://people.nl.linux.org/~gerrit/
Kom in verzet tegen dit kabinet:
	http://www.sp.nl/



More information about the Python-Dev mailing list