[slang-users] EXIT_BLOCK not executed on Error
John E. Davis
davis at space.mit.edu
Sun Sep 7 00:20:58 UTC 2008
On Sat, 6 Sep 2008 20:17:38 +0000 (UTC), Jörg Sommer <joerg at alea.gnuu.de>
wrote:
> I expect this code prints ‘foo’ and the error message, but it prints only
> the error message.
>
> % cat /tmp/test.sl
> define test()
>{
> #ifexists push_spot
> push_spot();
> EXIT_BLOCK
> {
> pop_spot();
> }
> () = eob();
> #else
> EXIT_BLOCK
> {
> message("foo");
> }
> #endif
> throw NotImplementedError;
>}
> test();
> % slsh /tmp/test.sl
> Not Implemented
> /tmp/test.sl:16:test:Not Implemented
>
> I expect
> % slsh /tmp/test.sl
> foo
> Not Implemented
> /tmp/test.sl:16:test:Not Implemented
>
> Is this a bug?
No. The EXIT_BLOCK will not get executed in the presence of an error.
Consider using a `finally' block, e.g.,
define slsh_main ()
{
try
{
throw NotImplementedError;
}
finally
{
message ("foo");
}
}
Thanks,
--John
More information about the slang-users-l
mailing list