I like the idea. Another thing that we may think about is the exception conventio name... Do the classes need a suffix or not ? which ones? Exception/Error/Warning? when Exception and when Error ?
Cheers Mariano On Wed, Apr 13, 2011 at 9:24 AM, Stéphane Ducasse <[email protected] > wrote: > sven did you get a look at issue 3999 since camillo started. > > http://code.google.com/p/pharo/issues/detail?id=3999 > > 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 > > > > > > > > > -- Mariano http://marianopeck.wordpress.com
