# raise()

Don Schwarz (darkowl@darkowl.pr.mcs.net)
Fri, 2 Aug 1996 14:37:54 PDT

- Messages sorted by:[ date ][ thread ][ subject ][ author ]

    On Fri, 2 Aug 1996, Richard Godard wrote:

    > I was wondering if we could have a reraise() bf (or reraise; statement)
    > that would continue the raising (and error catching) process as if the
    > except clause containing the bf call/statement has not caight it?
    >
    > ...
    > try
    >   foo:do_stuff(e_perm_trigger);
    > except error (E_PERM)
    >   {code, msg, value, tb} = error;
    >   if (value == e_perm_trigger)
    >     player:tell(msg);
    >     return;
    >   else
    >     "usually I raise(code, msg, value) but lose the tb info :(";
    >     reraise;
    >   endif
    > endtry
    >
    I would prefer just adding an optional 4th argument to raise() that the
    server uses for the traceback stack instead of creating one from the
    callers stack and current location in the verb.  So in the above example,
    the reraise line would be replaced with:
          raise(@error);
    Of course this would probably open up a few security holes so it might have
    to be wiz-only, I'm not sure.
                                                       --Dark_Owl