GenericException.st
changeset 15271 47f747e8a854
parent 15261 a4b1efbb3750
child 15286 83f48c5b9ed9
--- a/GenericException.st	Fri May 24 20:13:53 2013 +0200
+++ b/GenericException.st	Fri May 24 20:14:44 2013 +0200
@@ -1689,9 +1689,12 @@
     |con|
 
     con := handlerContext.
-    thisContext evaluateUnwindActionsUpTo:con.
     handlerContext := suspendedContext := raiseContext := nil.
-    con restart
+    con unwindAndRestart.
+
+"/    thisContext evaluateUnwindActionsUpTo:con.
+"/    handlerContext := suspendedContext := raiseContext := nil.
+"/    con restart
 
     "
      |rslt n|
@@ -1722,9 +1725,11 @@
 "/    ].
 
     con receiver handlerProtectedBlock:aBlock inContext:con.
-    thisContext evaluateUnwindActionsUpTo:con.
+"/    thisContext evaluateUnwindActionsUpTo:con.
+"/    handlerContext := suspendedContext := raiseContext := nil.
+"/    con restart
     handlerContext := suspendedContext := raiseContext := nil.
-    con restart
+    con unwindAndRestart.
 
     "
      |sig rslt|
@@ -1797,7 +1802,7 @@
 return
     "Continue after the handle:do: - the handle:do: returns nil"
 
-    |con|
+    |con value|
 
     con := handlerContext.
     "/ cg: moving the following clearing of the handlerContext
@@ -1809,10 +1814,11 @@
     "/ these are unmarkedForUnwind anyway, so there should be no danger
     "/ for endless recursion here... (i.e. each unwind action can at most
     "/ reraise that exception once).
+    value := self defaultReturnValue.   "/ evaluate before unwinding
     handlerContext := suspendedContext := raiseContext := nil.
     thisContext evaluateUnwindActionsUpTo:con.
     "/ handlerContext := suspendedContext := raiseContext := nil.
-    con return:(self defaultReturnValue)
+    con return:value
 
     "Modified: / 7.9.2001 / 13:29:34 / cg"
 !
@@ -2350,11 +2356,11 @@
 !GenericException class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/GenericException.st,v 1.139 2013-05-21 20:26:48 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/GenericException.st,v 1.140 2013-05-24 18:14:44 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libbasic/GenericException.st,v 1.139 2013-05-21 20:26:48 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/GenericException.st,v 1.140 2013-05-24 18:14:44 cg Exp $'
 ! !