Wiki

Case Status Kiln
Log In

Wiki

 
Improved Exception Hierarchy

Improved Exception Hierarchy

We added a new instance variable to Exception, called signaler. The idea is to abstract out the concept of the subject of the Exception since all Exceptions need that. Sometimes it is called receiver. We initialize signaler automatically when an exception is signaled (#signal) and set it to be equal to the #receiver since that will most of the time be right, unless it was already set by the caller.

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
Exception (+signaler, messageText)
  Abort
  Error
    ArithemticError
      ZeroDivide (--dividend)   
      FloatingPointException
      DomainError (from, to) ADDED
      NaNException ADDED
    FileStreamException (fileName)
      FileDoesNotExistException (?readOnly)
      FileExistsException (fileClass)
      FileWriteError
      FileReadError **
      FileClosedException **
      PermissionException **
      CannotDeleteFileException -- FilePermissionException
    MessageNotUnderstood (message, --receiver)
      ShouldNotCall
    NonBooleanReceiver (--object) -- MNU
    OutOfMemory
    Halt
      AssertionFailure
      BreakPoint
    SyntaxError ** !exists! (input, position)  ParsingError
      NumberFormatException ** ?
    ErrorNonInteractive ** NoInteractionAllowed
    TimedOut ** (operation, timeout) !exist as Warning!
    VerificationException
    IllegalOperation ** (operation, object)
    SizeMismatch ADDED
    CollectionIsEmpty ADDED
    SelectorException (selector) ADDED
      SubclassResponsibility ADDED
      PrimitiveFailed ADDED
      SubclassResponsibility ADDED
      ShouldNotImplement ADDED
      ShouldBeImplemented ADDED
    ReadOnlyReceiver **
    OutOfFreeSpace ** (size)
    InvalidArgument ** (message, argument)
      NonIntegerIndex **
    NotIndexable, NoKeyedAccess, CannotInstanciate ShouldNotCall ?
    SubscriptOutOfBounds (subscript, lowerBound, upperBound) ADDED
    NotFound (object) ADDED
      KeyNotFound OK
      ValueNotFound ADDED
    StreamException
      PositionError ** (index, from, to) 
      EndOfStream **
      BeginOfStream **
  Warning
    LowMemory ** (percentageFree)
    NotYetImplemented ** (message)