Joachim -
There are (and probably always will be) 2 different exception implementations -- instance-based legacy (ExceptionalEvent) and class-based ANSI (Exception). Currently a class-based exception turns itself into an instance-based exception when it is signalled.
The new modern way to handle exceptions is with class-based exceptions, but I have tried very hard to make it so you can't tell from the outside which kind of exception was used. Migrating the instance-based exceptions to class-based is a fairly low-priority task at the moment.
For class-based exceptions, #description does what you want ((ExError) An error has occurred.: Could not do that because 15 screws are missing in the left wing); unfortunately, for instance-based exceptions, it does what you see (which is the legacy instance-based behavior).
Here is a replacement method for Signal>>#definition that should give you what you want for both kinds of exceptions:
description
"Synopsis:
Return a textual description of the exception.
Definition: <exceptionDescription>
Return text that describes in a human readable form an occurrence of an exception. If an explicit
message text was provided by the signaler of the exception, that text should be incorporated into
the description.
Return Value:
<readableString> unspecified
Errors:
none
Implementation Notes:
Promoted from Exception."
| desc |
desc := self exception description.
^ self messageText
ifNil: [ desc ]
ifNotNil: [ :mt | desc, ': ', mt ]
Of course, this change to Signal>>#definition will probably cause someone somewhere a migration issue.
John