[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

UNWIND-PROTECT-CLEANUP-NON-LOCAL-EXIT



Here's an opinion on this issue from one of our developers, with an
interesting rationale.  I agree with the rationale, which is why I
support either the mentioned proposal or the one that signals an error
and allows the outer THROW to be completed from the debugger.


Date: Thu, 23 Apr 87 12:32 EDT
 From: Charles Hornig <Hornig@ALDERAAN.SCRC.Symbolics.COM>

I found KMP's proposal for this and I can now comment effectively.  My
personal feelings are that the right proposal for 1 is the one below.  I
agree with KMP that 2C is correct for 2.


Proposal (UNWIND-PROTECT-CLEANUP-NON-LOCAL-EXIT:1?):

  Some may believe that the throw to BAR is suppressed,
  the THROW to FOO should somehow complete, but that XXX would 
  never be printed.


The important factor here is that I believe that whenever there are two
THROW's in competition, that we should always proceed to the outermost
CATCH.  This rule permits a programmer to assume that if he does a THROW
out of a computation that that computation will be exited, one way or
another.  This is related to Moon's comment about the programming
environment and aborting.