Exception.st
changeset 2562 e89b40632edc
parent 2509 20e70b07473a
child 2893 8ba406da6b22
equal deleted inserted replaced
2561:205ee33decf9 2562:e89b40632edc
   695      Finally fall back to Exceptions emergencyHandler, which is always
   695      Finally fall back to Exceptions emergencyHandler, which is always
   696      available and enters the debugger.
   696      available and enters the debugger.
   697      ATTENTION: the code below depends on being called by #raise or
   697      ATTENTION: the code below depends on being called by #raise or
   698      #raiseRequest for proper operation (it skips the sending context)."
   698      #raiseRequest for proper operation (it skips the sending context)."
   699 
   699 
   700     |theContext block noHandlerSignal any msg sel conArg1
   700     |theContext block noHandlerSignal any msg conArg1
   701      theSignal c ex1 activeHandlers inHandler rejected
   701      theSignal c ex1 activeHandlers inHandler rejected
   702      lastHandler h raiseReceiver|
   702      lastHandler h raiseReceiver|
   703 
   703 
   704     theContext := thisContext sender sender.  "the raise/raiseRequest-context"
   704     theContext := thisContext sender sender.  "the raise/raiseRequest-context"
   705                                               "the signal raise context"
   705                                               "the signal raise context"
   784     any := false.
   784     any := false.
   785     [theContext notNil] whileTrue:[
   785     [theContext notNil] whileTrue:[
   786         theContext := theContext findNextContextWithSelector:#'handle:do:' or:#'handle:from:do:'.
   786         theContext := theContext findNextContextWithSelector:#'handle:do:' or:#'handle:from:do:'.
   787         theContext notNil ifTrue:[
   787         theContext notNil ifTrue:[
   788             (theContext selector == #'handle:do:'
   788             (theContext selector == #'handle:do:'
   789             or:["sel = #'handle:from:do:'"
   789             or:[(theContext argAt:2) == originator]) 
   790                 (theContext argAt:2) == originator]) ifTrue:[
   790 	    ifTrue:[
   791 
       
   792                 "/ new behavior:
       
   793                 (activeHandlers notNil
   791                 (activeHandlers notNil
   794                  and:[activeHandlers includesIdentical:theContext]) ifTrue:[
   792                  and:[activeHandlers includesIdentical:theContext]) ifTrue:[
   795                     'skip activeHandler: ' print. theContext displayString printCR.
   793                     'skip activeHandler: ' print. theContext displayString printCR.
   796 
   794 
   797                 ] ifFalse:[
   795                 ] ifFalse:[
   917 ! !
   915 ! !
   918 
   916 
   919 !Exception class methodsFor:'documentation'!
   917 !Exception class methodsFor:'documentation'!
   920 
   918 
   921 version
   919 version
   922     ^ '$Header: /cvs/stx/stx/libbasic/Exception.st,v 1.52 1997-03-27 15:48:14 cg Exp $'
   920     ^ '$Header: /cvs/stx/stx/libbasic/Exception.st,v 1.53 1997-04-18 14:39:43 cg Exp $'
   923 ! !
   921 ! !
   924 Exception initialize!
   922 Exception initialize!