--- 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!