"False exceptions?" (was Re: theme of the week: tools
danperl at rogers.com
Mon Sep 27 08:26:01 CEST 2004
I've done a little more digging into the Wing IDE documentation and this is
one of the better explanations I've found on the "false exceptions":
"As you try out the various demos from the tree on the left of the wxPython
demo app, you will sometimes see Wing IDE report exceptions in its Error
List dialog, which will come to the front as the wxPython demo pauses at the
exception. These are not program errors or a malfunction of the IDE. As
described at the end of the Error List text, these are caused by Wing's
proactive exception detection algorithm, which cannot see into the C and C++
code that is handling these exceptions outside of the debugger.
To get past them, select "Ignore this exception location" in the Error List
window and click on Continue Execution. You will see 3-4 of these the first
time Wing IDE encounters them. After that, your ignore list is stored in the
project so you will never see them again, even in future debug sessions.
Subsequently, you will benefit from Wing's ability to stop immediately at
the point of exception, rather than after the fact. This makes understanding
the conditions leading to an error much easier and speeds up debug
I can see a benefit in stopping at the point of exception, but if that
causes false positives (term used by one of their support people) with the
builtin modules that are implemented in C/C++, then I'd rather just live
without this benefit. Apparently, there is a way to disable that behavior
(I found out about it only now), but Wing keeps recommending the "Ignore
this exception location" solution.
And here is the kind of comment that really bothers me. An actual statement
from their documentation ("Debugging Zope with Wing IDE"):
"Another useful exception related feature is the ability to ignore
exceptions selectively by line of code on which they occur. You can choose
this option in the Error List window that comes up when an exception occurs.
In Zope, as in other Python apps that contain some non-Python code, Wing
will incorrectly identify some exceptions as unhandled because it cannot see
whether enclosing C code is going to handle the exception. This usually
happens in 1-2 places in Zope and can be dealt with by ignoring subsequent
instances of the exception. The zope.wpr project distributed with the
Wing+Zope bundle already has these ignores in place."
No, this is NOT a "useful exception related feature", it's a workaround for
a bug. And it's 1-2 times for Zope, it was 3-4 times in the comments above,
how do they get these estimates? I got this problem (er, useful exception
related feature) with the first script I debugged.
"Carlos Ribeiro" <carribeiro at gmail.com> wrote in message
news:mailman.3947.1096250696.5135.python-list at python.org...
> On Sun, 26 Sep 2004 21:36:18 -0400, Peter Hansen <peter at engcorp.com>
>> Dan Perl wrote:
>> > I debugged one of my
>> > scripts (that I knew it works) and got an unexplainable exception. It
>> > turns
>> > out that Wing IDE falsely detects some exceptions. They know about it
>> > and
>> > they suggest that if you KNOW that it's a false exception you should
>> > flag it
>> > to be ignored. Yes, Wingware people, I know it's a false exception,
>> > but
>> What exactly is a "false exception"? I have never heard of such
>> a thing, and can't imagine what it might be. Python raises
>> exceptions, they are subclasses of Exception or (old-style)
>> strings, they have tracebacks, they come from a variety of
>> sources, there's lots of things to know about exceptions but
>> "falseness" is not something about which I'm aware...
> They're false in the sense that that they're not supposed to be raised
> to the attention of the user. What happens is that Wing IDE is super
> sensitive with regards to exceptions; when an exception is raised in
> some internal module, Wing tries to outsmart the library and warn the
> user that an exception happened. A "false exception" is one that would
> happen and be silently treated by the library itself, without nobody
> noticing, but that's catched by Wing IDE nonetheless, in a totally
> unnecessary and obstrusive way. You can see that it's a case where the
> tool tries to be too smart for its own good.
> p.s. Why do they do it? For what I could see, the intention seems to
> be able to catch situations where a valid exception that should be
> raised to the user attention is silented by a generic error handler.
> It really may be useful in some situations, but it isn't a reasonable
> default in my opinion.
> Carlos Ribeiro
> Consultoria em Projetos
> blog: http://rascunhosrotos.blogspot.com
> blog: http://pythonnotes.blogspot.com
> mail: carribeiro at gmail.com
> mail: carribeiro at yahoo.com
More information about the Python-list