Stef,
For rangeError the code would look like this:
[
(NumericError new)
reason: #rangeError;
signal: 'access out of bounds'
]
on: NumericError
do: [:ex |
ex reasonCode == #rangeError
ifTrue: [ "do your thang" ]
ifFalse: [ ex pass ]].
Dale
On 04/14/2011 11:13 AM, Stéphane Ducasse wrote:
Dale
so it means that I write what?
[] on: NumericError do: [:ex | ]
how do I access the rangeError?
Using Sven's hierachy as a starting point and taking some cues from the
GemStone exception hierarchy, I would suggest the following (names atarting
with # are reasonCodes in the namespace of the parent exception class, instead
of a unique class):
Exception (messageText reasonCode)
Abort
Error
NumericError
#floatingPointException
#rangeError
#naNError
ZeroDivide (dividend)
FileStreamException (fileName)
#fileDoesNotExistException
#fileExistsException (fileClass)
#cannotDeleteFileException
#fileWriteError
#fileReadError **
#fileClosedException **
#cannotAccessFileException **
#readonlyFileException **
MessageNotUnderstood (message, receiver)
#nonBooleanReceiver (object)
OutOfMemory< handlers?>
ControlInterrupt
Halt
AssertionFailure
BreakPoint
CompileError
SyntaxError ** !exists! (input, position)
#numberFormatException **
#headlessError **
TimedOut ** (object, operation, timeout)
VerificationException
IllegalOperation ** (operation, object)
#sizeMismatch (objects)
#subclassResponsibility ** (message, receiver)
#notYetImplemented ** (message, receiver)
#cannotInstanciate ** (class)
#readOnlyObject ** (object)
OutOfFreeSpace **<handlers?>
#invalidArgument ** (message, receiver, argument)
#notIndexable ** (object)
#noKeyedAccess ** (object)
#nonIntegerIndex ** (receiver, index)
#subscriptOutOfBounds ** (receiver, index, from, to)
NotFoundException ** (receiver, object)
#keyNotFound **
#valueNotFound **
#elementNotFound **
StreamException (stream)
#positionError ** (index, from, to)
EndOfStream **
#beginOfStream **
Notification
Admonition
LowMemory **<this should be a notification not an error>