[Pharo-project] Improving Pharo's Exception Hierarchy

Stéphane Ducasse stephane.ducasse at inria.fr
Thu Apr 14 20:13:55 CEST 2011


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




More information about the Pharo-project mailing list