Next: Nested calls, Up: Debugging
First, let’s take a look at a typical error. Type:
7 plus: 1
This will print out:
7 did not understand selector 'plus:' <blah blah> UndefinedObject>>#executeStatements
The first line is pretty simple; we sent a message to the
7
object which was not understood; not surprising since
the plus:
operation should have been +
. Then there are
a few lines of gobbledegook: just ignore them, they reflect
the fact that the error passed throgh GNU Smalltalk’s exception
handling system. The remaining line reflect the way the
GNU Smalltalk invokes code which we type to our command prompt; it
generates a block of code which is invoked via an internal
method executeStatements
defined in class Object and evaluated
like nil executeStatements
(nil is an instance of UndefinedObject).
Thus, this output tells you that you directly typed a line which sent an
invalid message to the 7
object.
All the error output but the first line is actually a stack backtrace. The most recent call is the one nearer the top of the screen. In the next example, we will cause an error which happens deeper within an object.