GenericException.st
changeset 13009 e068f228a24b
parent 12940 33ad32d0a4de
child 13055 e1b9a8ca766e
--- a/GenericException.st	Mon Aug 09 20:08:24 2010 +0200
+++ b/GenericException.st	Tue Aug 10 10:34:53 2010 +0200
@@ -208,9 +208,11 @@
     <context: #return>
 
     ^ (self newException
-        suspendedContext:thisContext sender
-        errorString:messageText)
-            raiseSignal.
+                suspendedContext:thisContext sender
+                errorString:messageText)
+        raiseSignal.
+
+    "Modified: / 10-08-2010 / 09:41:56 / cg"
 ! !
 
 !GenericException class methodsFor:'Compatibility-Squeak'!
@@ -540,13 +542,11 @@
     <context: #return>
     <resource: #skipInDebuggersWalkBack>
 
-    ^ (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"
+    ^ self basicNew
+        raiseIn:thisContext sender
+
+    "Created: / 23-07-1999 / 14:07:17 / stefan"
+    "Modified: / 10-08-2010 / 09:30:42 / cg"
 !
 
 raiseErrorString:aString
@@ -556,13 +556,12 @@
     <context: #return>
     <resource: #skipInDebuggersWalkBack>
 
-    ^ (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"
+    ^ self basicNew
+        raiseErrorString:aString
+        in:thisContext sender
+
+    "Created: / 23-07-1999 / 14:07:33 / stefan"
+    "Modified: / 10-08-2010 / 09:34:37 / cg"
 !
 
 raiseErrorString:aString in:aContext
@@ -572,13 +571,11 @@
     <context: #return>
     <resource: #skipInDebuggersWalkBack>
 
-    ^ (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"
+    ^ self basicNew
+        raiseErrorString:aString in:aContext
+
+    "Created: / 23-07-1999 / 14:07:33 / stefan"
+    "Modified: / 10-08-2010 / 09:35:37 / cg"
 !
 
 raiseFrom:something 
@@ -604,13 +601,11 @@
     <context: #return>
     <resource: #skipInDebuggersWalkBack>
 
-    ^ (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"
+    ^ self basicNew
+        raiseRequestIn:thisContext sender
+
+    "Created: / 23-07-1999 / 14:08:24 / stefan"
+    "Modified: / 10-08-2010 / 09:37:06 / cg"
 !
 
 raiseRequestErrorString:aString
@@ -620,9 +615,10 @@
     <context: #return>
     <resource: #skipInDebuggersWalkBack>
 
-    ^ (self newException
-        suspendedContext:thisContext sender errorString:aString)
-        raiseRequest
+    ^ self basicNew
+        raiseRequestErrorString:aString in:thisContext sender
+
+    "Modified: / 10-08-2010 / 09:40:38 / cg"
 !
 
 raiseRequestFrom:something 
@@ -648,13 +644,11 @@
     <context: #return>
     <resource: #skipInDebuggersWalkBack>
 
-    ^ (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"
+    ^ self basicNew
+        raiseRequestWith:aParameter in:thisContext sender
+
+    "Created: / 23-07-1999 / 14:08:48 / stefan"
+    "Modified: / 10-08-2010 / 09:57:14 / cg"
 !
 
 raiseRequestWith:aParameter errorString:aString
@@ -664,13 +658,11 @@
     <context: #return>
     <resource: #skipInDebuggersWalkBack>
 
-    ^ (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"
+    ^ self basicNew
+        raiseRequestWith:aParameter errorString:aString in:thisContext sender
+
+    "Created: / 23-07-1999 / 14:08:57 / stefan"
+    "Modified: / 10-08-2010 / 09:56:55 / cg"
 !
 
 raiseRequestWith:aParameter errorString:aString in:aContext
@@ -682,13 +674,11 @@
     <context: #return>
     <resource: #skipInDebuggersWalkBack>
 
-    ^ (self newException
-        suspendedContext:aContext parameter:aParameter errorString:aString)
-        raiseRequest
-
-    "Modified: / 26.7.1996 / 16:29:27 / cg"
-    "Modified: / 12.3.1998 / 15:18:34 / stefan"
-    "Created: / 23.7.1999 / 14:09:07 / stefan"
+    ^ self basicNew
+        raiseRequestWith:aParameter errorString:aString in:aContext
+
+    "Created: / 23-07-1999 / 14:09:07 / stefan"
+    "Modified: / 10-08-2010 / 09:56:36 / cg"
 !
 
 raiseRequestWith:aParameter in:aContext
@@ -699,9 +689,10 @@
     <context: #return>
     <resource: #skipInDebuggersWalkBack>
 
-    ^ (self newException
-        suspendedContext:aContext parameter:aParameter)
-        raiseRequest
+    ^ self basicNew
+        raiseRequestWith:aParameter in:aContext
+
+    "Modified: / 10-08-2010 / 09:56:12 / cg"
 !
 
 raiseSignal
@@ -790,13 +781,11 @@
     <context: #return>
     <resource: #skipInDebuggersWalkBack>
 
-    ^ (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"
+    ^ self basicNew
+        raiseWith:aParameter in:thisContext sender
+
+    "Created: / 23-07-1999 / 14:09:27 / stefan"
+    "Modified: / 10-08-2010 / 09:51:11 / cg"
 !
 
 raiseWith:aParameter errorString:aString
@@ -807,13 +796,11 @@
     <context: #return>
     <resource: #skipInDebuggersWalkBack>
 
-    ^ (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"
+    ^ self basicNew
+          raiseWith:aParameter errorString:aString in:thisContext sender.
+
+    "Created: / 23-07-1999 / 14:09:36 / stefan"
+    "Modified: / 10-08-2010 / 09:52:59 / cg"
 !
 
 raiseWith:aParameter errorString:aString in:aContext
@@ -826,13 +813,11 @@
     <context: #return>
     <resource: #skipInDebuggersWalkBack>
 
-    ^ (self newException
-          suspendedContext:aContext parameter:aParameter errorString:aString)
-          raise.
-
-    "Modified: / 26.7.1996 / 16:29:42 / cg"
-    "Modified: / 12.3.1998 / 15:20:12 / stefan"
-    "Created: / 23.7.1999 / 14:09:46 / stefan"
+    ^ self basicNew
+          raiseWith:aParameter errorString:aString in:aContext.
+
+    "Created: / 23-07-1999 / 14:09:46 / stefan"
+    "Modified: / 10-08-2010 / 09:52:10 / cg"
 !
 
 raiseWith:aParameter in:aContext
@@ -844,9 +829,10 @@
     <context: #return>
     <resource: #skipInDebuggersWalkBack>
 
-    ^ (self newException
-          suspendedContext:aContext parameter:aParameter)
-          raise.
+    ^ self basicNew
+        raiseWith:aParameter in:aContext
+
+    "Modified: / 10-08-2010 / 09:52:38 / cg"
 !
 
 signalWith:messageText
@@ -1171,9 +1157,12 @@
 !
 
 creator
-    "return the creator of the exception"
-
-    ^ signal
+    "return the creator of the exception;
+     same as signal, for compatibility"
+
+    ^ signal ? self class
+
+    "Modified: / 10-08-2010 / 09:23:18 / cg"
 !
 
 errorString
@@ -1358,15 +1347,9 @@
 signal
     "return the signal, that caused the exception"
 
-    ^ signal
-!
-
-signal:aSignal
-    "set the signal, that caused the exception"
-
-    signal := aSignal
-
-    "Created: / 5.3.1998 / 16:02:46 / stefan"
+    ^ signal ? self class
+
+    "Modified: / 10-08-2010 / 09:22:33 / cg"
 !
 
 suspendedContext
@@ -1445,9 +1428,11 @@
      Subclasses may redefine this."
 
     proceedable notNil ifTrue:[^ proceedable].
-    ^ signal mayProceed.
-
-    "Created: / 23.7.1999 / 14:48:26 / stefan"
+    signal notNil ifTrue:[^ signal mayProceed].
+    ^ self class mayProceed.
+
+    "Created: / 23-07-1999 / 14:48:26 / stefan"
+    "Modified: / 10-08-2010 / 09:39:15 / cg"
 !
 
 noHandler
@@ -1848,6 +1833,22 @@
 
 !GenericException methodsFor:'private'!
 
+checkProceedable
+    "helper for all raiseRequest methods"
+
+    self mayProceed ifFalse:[
+        StrictRaising ifTrue:[
+            "/ proceeding from wrongProceedabilitySignal grants the raiseRequest
+            WrongProceedabilityError raiseRequestWith:signal
+        ] ifFalse:[
+            self class name infoPrint.
+            ' [warning]: raised with wrong proceedability' infoPrintCR.
+        ]
+    ].
+
+    "Created: / 10-08-2010 / 09:54:41 / cg"
+!
+
 doCallAction
     "call the action proper
      - needed an extra method to have a raise-marked context around
@@ -1903,10 +1904,13 @@
     originator isNil ifTrue:[
         originator := suspendedContext homeReceiver
     ].
-
-    signal isExceptionCreator ifFalse:[
-        "not an exception or Signal - there is something wrong here..."
-        GenericException raiseWith:signal errorString:'unexpected non-ExceptionCreator in calling context'.
+    signal isNil ifTrue:[
+        signal := self class
+    ] ifFalse:[
+        signal isExceptionCreator ifFalse:[
+            "not an exception or Signal - there is something wrong here..."
+            Error "GenericException" raiseWith:signal errorString:'unexpected non-ExceptionCreator in calling context'.
+        ]
     ].
 
     "now, start searching for a handler.
@@ -1976,9 +1980,9 @@
     "
     ^ self doCallAction
 
-    "Created: / 12.5.1996 / 15:09:39 / cg"
-    "Modified: / 9.11.1997 / 14:48:44 / cg"
-    "Modified: / 3.8.1999 / 11:20:41 / stefan"
+    "Created: / 12-05-1996 / 15:09:39 / cg"
+    "Modified: / 03-08-1999 / 11:20:41 / stefan"
+    "Modified: / 10-08-2010 / 09:26:14 / cg"
 ! !
 
 !GenericException methodsFor:'raising'!
@@ -2000,6 +2004,37 @@
     "Modified: / 3.8.1999 / 13:33:01 / stefan"
 !
 
+raiseErrorString:aString in:aContext
+    "raise the signal nonproceedable.
+     The argument, aString is used as messageText"
+
+    <context: #return>
+
+    raiseContext := thisContext.
+    suspendedContext := aContext.
+    messageText := aString.
+    proceedable := false.
+
+    ^ self doRaise
+
+    "Created: / 10-08-2010 / 09:33:43 / cg"
+!
+
+raiseIn:aContext
+    "actually raise a non-proceedable exception"
+
+    <context: #return>
+
+    raiseContext := thisContext.
+    suspendedContext := aContext.
+    proceedable := false.
+
+    ^ self doRaise
+
+    "Modified: / 03-08-1999 / 13:33:01 / stefan"
+    "Created: / 10-08-2010 / 09:30:19 / cg"
+!
+
 raiseRequest
     "actually raise a proceedable exception."
 
@@ -2010,21 +2045,48 @@
         suspendedContext := raiseContext sender
     ].
 
-    self mayProceed ifFalse:[
-        StrictRaising ifTrue:[
-            "/ proceeding from wrongProceedabilitySignal grants the raiseRequest
-            WrongProceedabilityError raiseRequestWith:signal
-        ] ifFalse:[
-            self class name infoPrint.
-            ' [warning]: raised with wrong proceedability' infoPrintCR.
-        ]
-    ].
+    self checkProceedable.
 
     proceedable := true.
     ^ self doRaise
 
     "Modified: / 04-08-1999 / 08:05:12 / stefan"
-    "Modified: / 10-07-2010 / 19:48:42 / cg"
+    "Modified: / 10-08-2010 / 09:55:00 / cg"
+!
+
+raiseRequestErrorString:errorString in:aContext
+    "actually raise a proceedable exception."
+
+    <context: #return>
+
+    raiseContext := thisContext.
+    suspendedContext := aContext.
+    messageText := errorString.
+
+    self checkProceedable.
+
+    proceedable := true.
+    ^ self doRaise
+
+    "Modified: / 04-08-1999 / 08:05:12 / stefan"
+    "Created: / 10-08-2010 / 09:40:05 / cg"
+!
+
+raiseRequestIn:aContext
+    "actually raise a proceedable exception."
+
+    <context: #return>
+
+    raiseContext := thisContext.
+    suspendedContext := aContext.
+
+    self checkProceedable.
+
+    proceedable := true.
+    ^ self doRaise
+
+    "Modified: / 04-08-1999 / 08:05:12 / stefan"
+    "Created: / 10-08-2010 / 09:36:45 / cg"
 !
 
 raiseRequestWith:aParameter errorString:aString
@@ -2040,6 +2102,43 @@
     "Created: / 23.7.1999 / 14:08:57 / stefan"
 !
 
+raiseRequestWith:aParameter errorString:aString in:aContext
+    "actually raise a proceedable exception."
+
+    <context: #return>
+
+    raiseContext := thisContext.
+    suspendedContext := aContext.
+    parameter := aParameter.
+    messageText := aString.
+
+    self checkProceedable.
+
+    proceedable := true.
+    ^ self doRaise
+
+    "Modified: / 04-08-1999 / 08:05:12 / stefan"
+    "Created: / 10-08-2010 / 09:55:48 / cg"
+!
+
+raiseRequestWith:aParameter in:aContext
+    "actually raise a proceedable exception."
+
+    <context: #return>
+
+    raiseContext := thisContext.
+    suspendedContext := aContext.
+    parameter := aParameter.
+
+    self checkProceedable.
+
+    proceedable := true.
+    ^ self doRaise
+
+    "Modified: / 04-08-1999 / 08:05:12 / stefan"
+    "Created: / 10-08-2010 / 09:53:51 / cg"
+!
+
 raiseSignal
     "actually raise an exception (whatever the proceedability is)."
 
@@ -2063,6 +2162,39 @@
     ^ (self 
         suspendedContext:thisContext sender parameter:aParameter errorString:aString)
         raise.
+!
+
+raiseWith:aParameter errorString:aString in:aContext
+    "raise the signal nonproceedable.
+     The argument, aString is used as messageText"
+
+    <context: #return>
+
+    raiseContext := thisContext.
+    suspendedContext := aContext.
+    messageText := aString.
+    parameter := aParameter.
+    proceedable := false.
+
+    ^ self doRaise
+
+    "Created: / 10-08-2010 / 09:51:51 / cg"
+!
+
+raiseWith:aParameter in:aContext
+    "raise the signal nonproceedable.
+     The argument, aString is used as messageText"
+
+    <context: #return>
+
+    raiseContext := thisContext.
+    suspendedContext := aContext.
+    parameter := aParameter.
+    proceedable := false.
+
+    ^ self doRaise
+
+    "Created: / 10-08-2010 / 09:50:54 / cg"
 ! !
 
 !GenericException methodsFor:'setup'!
@@ -2132,11 +2264,11 @@
 !GenericException class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/GenericException.st,v 1.125 2010-07-10 17:49:23 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/GenericException.st,v 1.126 2010-08-10 08:34:53 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/GenericException.st,v 1.125 2010-07-10 17:49:23 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/GenericException.st,v 1.126 2010-08-10 08:34:53 cg Exp $'
 ! !
 
 GenericException initialize!