QuerySignal generates Notifications instead of Exceptions.
authorStefan Vogel <sv@exept.de>
Fri, 21 Jan 2005 11:28:35 +0100
changeset 8685 06c1d82512f5
parent 8684 9c00854305f7
child 8686 708fa53592f6
QuerySignal generates Notifications instead of Exceptions. Implement the same set of #raise... methods in GenericException class and Signal. Remove unsed instance variable from signal. Save some message sends when raising signals.
Signal.st
--- a/Signal.st	Fri Jan 21 11:26:27 2005 +0100
+++ b/Signal.st	Fri Jan 21 11:28:35 2005 +0100
@@ -168,30 +168,6 @@
     ^ NoHandlerError
 
     "Modified: / 4.8.1999 / 08:10:09 / stefan"
-!
-
-proceedErrorSignal
-    "return the signal used to indicate that a handler tried to
-     proceed a signal marked as nonproceedable.
-     The parameter for the exception raised by this signal is
-     the exception which tried to proceed."
-
-    ^ ProceedError
-
-    "Created: / 27.2.1998 / 14:36:15 / stefan"
-    "Modified: / 4.8.1999 / 08:00:20 / stefan"
-!
-
-wrongProceedabilitySignal
-    "return the signal used to indicate that a signaler wants
-     to raise a nonproceedable signal proceedable.
-     The parameter for the exception raised by this signal is
-     the unproceedable signal."
-
-    ^ WrongProceedabilityError
-
-    "Created: / 27.2.1998 / 14:24:19 / stefan"
-    "Modified: / 4.8.1999 / 08:03:46 / stefan"
 ! !
 
 !Signal methodsFor:'Compatibility-VW'!
@@ -205,27 +181,6 @@
      setting the parent of the new signal to the receiver."
 
     ^ self newSignal
-!
-
-raiseSignal
-    "actually raise an exception (whatever the proceedability is)."
-
-    ^ self raiseSignal:(self description) with:nil
-!
-
-raiseSignal:errorMessage
-    "actually raise an exception (whatever the proceedability is)."
-
-    ^ self raiseSignal:errorMessage with:nil
-!
-
-raiseSignal:errorMessage with:aParameter
-    "actually raise an exception (whatever the proceedability is)."
-
-    self mayProceed ifFalse:[
-        ^ self raiseWith:aParameter errorString:errorMessage
-    ].
-    ^ self raiseRequestWith:aParameter errorString:errorMessage
 ! !
 
 !Signal methodsFor:'accessing'!
@@ -334,24 +289,14 @@
 !Signal methodsFor:'exception creation'!
 
 newException
+    "{ Pragma: +inlineNew }"
     "answer a new exception object for this signal.
      Subclasses may redefine this method"
 
-    ^ Exception signal:self originator:nil
+    ^ Exception basicNew setSignal:self
 
     "Created: / 26.2.1998 / 19:53:56 / stefan"
     "Modified: / 23.7.1999 / 13:41:00 / stefan"
-!
-
-newExceptionFrom:originator
-    "answer a new exception object for this signal.
-     Set the originator.
-     Subclasses may redefine this method"
-
-    ^ Exception signal:self originator:originator
-
-    "Created: / 27.2.1998 / 09:17:00 / stefan"
-    "Modified: / 23.7.1999 / 13:41:15 / stefan"
 ! !
 
 !Signal methodsFor:'instance creation'!
@@ -550,152 +495,245 @@
 
 raise
     "raise a signal nonproceedable.
-     The signals notifierString is used as errorString."
+     The signals notifierString is used as messageText."
 
     <context: #return>
 
-    ^ self newException 
+    ^ self newException
         suspendedContext:thisContext sender;
         raise
 
     "Modified: / 2.5.1996 / 16:36:23 / cg"
     "Modified: / 5.3.1998 / 16:44:36 / stefan"
+    "Created: / 23.7.1999 / 14:07:17 / stefan"
 !
 
 raiseErrorString:aString
     "raise a signal nonproceedable.
-     The argument is used as errorString."
+     The argument is used as messageText."
 
     <context: #return>
 
-    ^ self newException 
-        suspendedContext:thisContext sender;
-        messageText:aString;
-        raise.
+    ^ (self newException
+        suspendedContext:thisContext sender
+        errorString:aString)
+            raise.
 
     "Modified: / 9.5.1996 / 15:17:59 / cg"
     "Modified: / 12.3.1998 / 15:15:22 / stefan"
+    "Created: / 23.7.1999 / 14:07:33 / stefan"
 !
 
 raiseErrorString:aString in:aContext
     "raise a signal nonproceedable.
-     The argument is used as errorString."
+     The argument is used as messageText."
 
     <context: #return>
 
-    ^ self newException 
-        suspendedContext:aContext;
-        messageText:aString;
-        raise.
+    ^ (self newException
+        suspendedContext:aContext
+        errorString:aString)
+            raise.
 
     "Modified: / 9.5.1996 / 15:17:59 / cg"
     "Modified: / 12.3.1998 / 15:15:22 / stefan"
+    "Created: / 23.7.1999 / 14:07:33 / stefan"
 !
 
-raiseFrom:something
+raiseFrom:something 
     "raise a signal nonproceedable.
      The argument, something is passed both as parameter and originator."
-
+    
     <context: #return>
 
-    ^ (self newExceptionFrom:something) 
-        suspendedContext:thisContext sender;
-        parameter:something;
+    ^ self newException
+        suspendedContext:thisContext sender
+            parameter:something
+            originator:something;
         raise
 
     "Modified: / 2.5.1996 / 16:36:38 / cg"
     "Modified: / 5.3.1998 / 16:49:55 / stefan"
+    "Created: / 23.7.1999 / 14:07:59 / stefan"
 !
 
 raiseRequest
     "raise a signal proceedable.
-     The signals notifierString is used as errorString."
+     The signals notifierString is used as messageText."
 
     <context: #return>
 
-    ^ self newException 
+    ^ self newException
         suspendedContext:thisContext sender;
         raiseRequest.
 
     "Modified: / 2.5.1996 / 16:36:52 / cg"
     "Modified: / 5.3.1998 / 16:50:46 / stefan"
+    "Created: / 23.7.1999 / 14:08:24 / stefan"
 !
 
 raiseRequestErrorString:aString
     "raise a signal proceedable.
-     The argument, aString is used as errorString."
+     The argument, aString is used as messageText."
 
     <context: #return>
 
-    ^ self newException 
-        suspendedContext:thisContext sender;
-        messageText:aString;
+    ^ self newException
+        suspendedContext:thisContext sender errorString:aString;
+        raiseRequest
+!
+
+raiseRequestFrom:something 
+    "raise a signal proceedable.
+     The argument, something is passed both as parameter and originator."
+    
+    <context: #return>
+
+    ^ (self newException)
+        suspendedContext:thisContext sender
+            parameter:something
+            originator:something;
+        raiseRequest
+
+    "Modified: / 2.5.1996 / 16:36:38 / cg"
+    "Modified: / 5.3.1998 / 16:52:46 / stefan"
+    "Created: / 23.7.1999 / 14:08:36 / stefan"
+!
+
+raiseRequestWith:aParameter
+    "raise a signal proceedable.
+     The signals notifierString is used as messageText."
+
+    <context: #return>
+
+    ^ self newException
+        suspendedContext:thisContext sender parameter:aParameter;
+        raiseRequest.
+
+    "Modified: / 9.5.1996 / 15:13:20 / cg"
+    "Modified: / 12.3.1998 / 15:16:57 / stefan"
+    "Created: / 23.7.1999 / 14:08:48 / stefan"
+!
+
+raiseRequestWith:aParameter errorString:aString
+    "raise a signal proceedable.
+     The argument, aString is used as messageText."
+
+    <context: #return>
+
+    ^ self newException
+        suspendedContext:thisContext sender
+            parameter:aParameter
+            errorString:aString;
         raiseRequest
 
     "Modified: / 9.5.1996 / 15:13:35 / cg"
     "Modified: / 12.3.1998 / 15:17:52 / stefan"
+    "Created: / 23.7.1999 / 14:08:57 / stefan"
 !
 
-raiseRequestFrom:something
+raiseRequestWith:aParameter errorString:aString in:aContext
     "raise a signal proceedable.
-     The argument, something is passed both as parameter and originator."
-
-    <context: #return>
+     The argument, aString is used as messageText.
+     The additional context is passed as the context responsible for the raise,
+     allowing a raise to mimicri the exception happened somewhere else."
 
-    ^ (self newExceptionFrom:something) 
-        suspendedContext:thisContext sender;
-        parameter:something;
-        raiseRequest.
+    ^ self newException
+        suspendedContext:aContext
+            parameter:aParameter
+            errorString:aString;
+        raiseRequest
 
-    "Modified: / 2.5.1996 / 16:36:38 / cg"
-    "Modified: / 5.3.1998 / 16:52:46 / stefan"
+    "Modified: / 26.7.1996 / 16:29:27 / cg"
+    "Modified: / 12.3.1998 / 15:18:34 / stefan"
+    "Created: / 23.7.1999 / 14:09:07 / stefan"
 !
 
-raiseRequestWith:aParameter
+raiseRequestWith:aParameter in:aContext
     "raise a signal proceedable.
-     The signals notifierString is used as errorString."
+     The additional context is passed as the context responsible for the raise,
+     allowing a raise to mimicri the exception happened somewhere else."
+
+    ^ self newException
+        suspendedContext:aContext parameter:aParameter;
+        raiseRequest
+!
+
+raiseSignal
+    "raise a signal (proceedable or not, whatever the proceedability is).
+     The signals notifierString is used as messageText."
 
     <context: #return>
 
     ^ self newException
         suspendedContext:thisContext sender;
-        parameter:aParameter;
-        raiseRequest.
+        raiseSignal
 
-    "Modified: / 9.5.1996 / 15:13:20 / cg"
-    "Modified: / 12.3.1998 / 15:16:57 / stefan"
+    "Modified: / 10.11.2001 / 15:13:34 / cg"
 !
 
-raiseRequestWith:aParameter errorString:aString
-    "raise a signal proceedable.
-     The argument, aString is used as errorString."
+raiseSignal:errorMessage
+    "ANSI: raise a signal (proceedable or not, whatever the proceedability is).
+     The argument, errorMessage is used as messageText."
+
+    <context: #return>
+
+    ^ self newException
+        suspendedContext:thisContext sender errorString:errorMessage;
+        raiseSignal.
+
+    "Modified: / 07-08-2004 / 19:24:00 / stefan"
+!
+
+raiseSignal:errorMessage with:aParameter
+    "ANSI: raise a signal (proceedable or not, whatever the proceedability is).
+     The argument, errorMessage is used as messageText."
 
     <context: #return>
 
-    ^ self newException 
-        suspendedContext:thisContext sender;
-        parameter:aParameter; 
-        messageText:aString;
-        raiseRequest
+    ^ self newException
+        suspendedContext:thisContext sender
+            errorString:errorMessage;
+            parameter:aParameter;
+        raiseSignal.
+
+    "Modified: / 07-08-2004 / 19:10:40 / stefan"
+!
 
-    "Modified: / 9.5.1996 / 15:13:35 / cg"
-    "Modified: / 12.3.1998 / 15:17:52 / stefan"
+raiseSignalErrorString:aString
+    "raise a signal (proceedable or not, whatever the proceedability is).
+     The argument, aString is used as messageText."
+
+    <context: #return>
+
+    ^ self newException
+        suspendedContext:thisContext sender errorString:aString;
+        raiseSignal.
 !
 
-raiseRequestWith:aParameter errorString:aString in:aContext
-    "raise a signal proceedable.
-     The argument, aString is used as errorString.
-     The additional context is passed as the context responsible for the raise,
-     allowing a raise to mimicri the exception happened somewhere else."
+raiseSignalWith:aParameter
+    "raise a signal (proceedable or not, whatever the proceedability is).
+     The argument, aParameter is passed as parameter."
+
+    <context: #return>
+
+    ^ self newException
+        suspendedContext:thisContext sender parameter:aParameter;
+        raiseSignal.
+!
 
-    ^ self newException 
-        parameter:aParameter; 
-        messageText:aString;
-        suspendedContext:aContext;
-        raiseRequest
+raiseSignalWith:aParameter errorString:aString
+    "raise a signal (proceedable or not, whatever the proceedability is).
+     The argument, aString is used as messageText,
+     aParameter is passed as exception parameter."
 
-    "Modified: / 26.7.1996 / 16:29:27 / cg"
-    "Modified: / 12.3.1998 / 15:18:34 / stefan"
+    <context: #return>
+
+    ^ self newException
+        suspendedContext:thisContext sender
+            parameter:aParameter
+            errorString:aString;
+        raiseSignal.
 !
 
 raiseWith:aParameter
@@ -704,48 +742,55 @@
 
     <context: #return>
 
-    ^ self newException 
-        suspendedContext:thisContext sender;
-        parameter:aParameter;
+    ^ self newException
+        suspendedContext:thisContext sender parameter:aParameter;
         raise.
 
     "Modified: / 9.5.1996 / 15:14:24 / cg"
     "Modified: / 12.3.1998 / 15:19:11 / stefan"
+    "Created: / 23.7.1999 / 14:09:27 / stefan"
 !
 
 raiseWith:aParameter errorString:aString
     "raise a signal nonproceedable.
-     The argument, aString is used as errorString, aParameter is passed
-     as exception parameter."
+     The argument, aString is used as messageText,
+     aParameter is passed as exception parameter."
 
     <context: #return>
 
-    ^ self newException 
-        suspendedContext:thisContext sender;
-        parameter:aParameter;
-        messageText:aString;
+    ^ self newException
+        suspendedContext:thisContext sender
+            parameter:aParameter
+            errorString:aString;
         raise.
 
     "Modified: / 9.5.1996 / 15:14:32 / cg"
     "Modified: / 12.3.1998 / 15:19:40 / stefan"
+    "Created: / 23.7.1999 / 14:09:36 / stefan"
 !
 
 raiseWith:aParameter errorString:aString in:aContext
     "raise a signal nonproceedable.
-     The argument, aString is used as errorString, aParameter is passed
+     The argument, aString is used as messageText, aParameter is passed
      as exception parameter.
      The additional context is passed as the context responsible for the raise,
      allowing a raise to mimicri the exception happened somewhere else."
 
-    ^ self newException 
-        parameter:aParameter; 
-        messageText:aString;
-        suspendedContext:aContext;
-        raise.
+    ^ self newException
+          suspendedContext:aContext
+              parameter:aParameter
+              errorString:aString;
+          raise.
 
-    "Created: / 2.5.1996 / 16:37:25 / cg"
     "Modified: / 26.7.1996 / 16:29:42 / cg"
     "Modified: / 12.3.1998 / 15:20:12 / stefan"
+    "Created: / 23.7.1999 / 14:09:46 / stefan"
+!
+
+signalWith:messageText
+    "ANSI compatibility"
+
+    self raiseErrorString:messageText
 ! !
 
 !Signal methodsFor:'save evaluation'!
@@ -910,5 +955,5 @@
 !Signal class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Signal.st,v 1.96 2005-01-20 12:26:14 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Signal.st,v 1.97 2005-01-21 10:28:35 stefan Exp $'
 ! !