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.

On Fri, Jun 27, 2025, 3:00 PM Aik-Siong Koh <as...@askoh.com> wrote:

> 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
>

Reply via email to