this is a good idea.
Now pay attention that we should restart to work on integrating FS and that the 
file exception may change.

Stef

On Apr 11, 2011, at 4:10 PM, Sven Van Caekenberghe wrote:

> Hi All,
> 
> I have this idea that I would like to discuss on the next Pharo sprint and 
> maybe start to implement if there is some consensus on it.
> 
> It has been mentioned many times before on this list that Object>>#error: 
> should be replaced by signalling specific Exceptions in as many cases as 
> possible (or where it makes sense). Even today, there was 
> http://code.google.com/p/pharo/issues/detail?id=3987 !
> 
> I think the core system should set the example here, by defining a number of 
> general purpose exceptions and by using them. Going over #error: senders will 
> be a lot of work but can be done in incremental/Pharo steps.
> 
> So I went over the current hierarchy, scanned quickly through their 
> references and some #error: senders by fundamental classes and looked at some 
> other Smalltalks. I came up with the following very rough draft of an 
> extended hierarchy (** marks new exceptions). In between brackets are the 
> instance variables. Of course, we have to discuss about naming, instance 
> variables and opportunities for reuse and inheritance (could be fun). 
> 
> I am no expert on exceptions and would certainly like to learn more. I am 
> probably overlooking some aspects. We have to keep this Smalltalk like, 
> flexible, dynamic, not start mimicing other languages. 
> 
> Any step in this direction will be an improvement over the current situation. 
> Really using them correctly throughout the system will take some time. 
> Defining the hierarchy could be done rather quickly. Refactoring is always 
> possible later on.
> 
> Exception (messageText)
>  Abort
>  Error
>    ArithemticError
>      ZeroDivide (dividend)    
>      FloatingPointException
>      RangeError ** (from, to)
>      NaNError **
>    FileStreamException (fileName)
>      FileDoesNotExistException (readOnly)
>      FileExistsException (fileClass)
>      CannotDeleteFileException
>      FileWriteError
>      FileReadError **
>      FileClosedException **
>      CannotAccessFileException **
>      ReadonlyFileException **
>    MessageNotUnderstood (message, receiver)
>    NonBooleanReceiver (object)
>    OutOfMemory
>    Halt
>      AssertionFailure
>      BreakPoint
>    SyntaxError ** !exists! (input, position)
>      NumberFormatException **
>    HeadlessError **
>    TimedOut ** (object, operation, timeout)
>    VerificationException
>    IllegalOperation ** (operation, object)
>    SizeMismatch (objects)
>    LowMemory ** (percentageFree)
>    SubclassResponsibility ** (message, receiver)
>    NotYetImplemented ** (message, receiver)
>    CannotInstanciate ** (class)
>    ReadOnlyObject ** (object)
>    OutOfFreeSpace ** (object, size)
>    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 ** 
> 
> All feedback is welcome.
> 
> Regards,
> 
> Sven
> 
> 
> 


Reply via email to