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>





Reply via email to