I think it's because nil *is* pretty special--this is the
equivalent of a NullPointerException or similar in other
languages (even though in fact nil is an object like any
other, it *is* usually a different type of *semantic* error on
the part of the programmer than with any other class).
UndefinedObject is also a pretty long class name, so it's nice
to leave that out. But I would be all in favor of making it
"nil did not understand #selector", to be more consistent but
still concise.��
Why is
UndefinedObject version of "did not understand" so
different from
others?
It also inverts the object message paradigm.
Thanks
Aik-Siong Koh
description
������ ��"Returns a textual description of the exception
(based on the
message instance variable). If message is nil, it returns
the
defaultDescription instead."
������ ��message ifNil: [ ^ self defaultDescription ].
������ ��message lookupClass == UndefinedObject ifTrue: [
������ ������ ��^ message selector printString , ' was sent to
nil' ].
������ ��^ 'Instance of ' , message lookupClass printString
������ ���� , ' did not understand ' , message selector
printString