At 2:33 PM -0400 10/15/02, [EMAIL PROTECTED] wrote: > >The constructor returns one of three values: an exception object, the >DO_OVER constant, or the EXPRESSION constant. > >If an exception object is returned, that means that the interpretor should >immediately exit the block, throwing the exception to that block's CATCH >block, or its parent's CATCH block, and so on outward until somebody >catches it. You know the routine. > >DO_OVER means to reevaluate the expression because the reference to the >offending variable has been set to something else.
While a nifty idea, this is not going to happen, at least not in the general case. Restartable exceptions are very, very difficult to do. (And parrot, alas, isn't going to be able to do them) You still need to establish an exception handler at the spot you want to restart at (which isn't free, alas) and you run into problems when you cross some internal boundaries in the interpreter. That won't stop you from throwing a continuation when you throw your own exceptions, which your own exception handlers can invoke when they see fit, but low-level exceptions like division by zero and suchlike things won't be able to do that. -- Dan --------------------------------------"it's like this"------------------- Dan Sugalski even samurai [EMAIL PROTECTED] have teddy bears and even teddy bears get drunk