From: "Nick Roberts" <nickroberts@blueyonder.co.uk>
Subject: Re: terminate applications
Date: Thu, 17 Jul 2003 23:44:17 +0100
Date: 2003-07-17T23:44:17+01:00 [thread overview]
Message-ID: <bf78or$boi9c$1@ID-25716.news.uni-berlin.de> (raw)
In-Reply-To: 23ERa.75454$OZ2.12362@rwcrnsc54
"Mark A. Biggar" <mark@biggar.org> wrote in message
news:23ERa.75454$OZ2.12362@rwcrnsc54...
> If you really need to abort an Ada program form some
> deeply nested code, raising an exception is a reasonable
> way to do it. All clean up actions are guaranteed to
> happen and you can add a handler to the main procedure
> to do any last gasp stuff cleanly.
Absolutely right.
Furthermore, on reviewing the first example I gave, I see that it is
rubbish! You cannot 'goto' out of a procedure in Ada. Sorry.
Perhaps it could be corrected to the following:
with Ada.Text_IO; use Ada.Text_IO;
procedure exit_from_prog is
Count: Natural := 0;
My_Exception: exception;
procedure Inner_Proc is
begin
Put_Line("Hello World");
if Count = 20 then
raise My_Exception;
end if;
end;
begin
loop
Inner_Proc;
Count := Count + 1;
end loop;
exception
when My_Exception =>
Put_Line("Clean termination!");
when others =>
Put_Line("Something unexpected!");
end;
I have tested this on GNAT!
The second example, and the reason why it is better, remains correct.
--
Nick Roberts
Jabber: debater@charente.de [ICQ: 159718630]
next prev parent reply other threads:[~2003-07-17 22:44 UTC|newest]
Thread overview: 75+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-07-17 10:39 terminate applications Riccardo
2003-07-17 19:54 ` Nick Roberts
2003-07-17 20:55 ` Mark A. Biggar
2003-07-17 22:44 ` Nick Roberts [this message]
2003-07-18 3:55 ` sk
-- strict thread matches above, loose matches on Subject: below --
2003-07-18 9:36 christoph.grein
2003-07-18 10:54 ` Jeffrey Creem
2003-07-18 11:51 ` Marin David Condic
2003-07-18 13:26 ` Nick Roberts
2003-07-18 15:18 ` Jeffrey Creem
2003-07-19 15:44 ` Marin David Condic
2003-07-20 2:03 ` Robert I. Eachus
2003-07-20 11:04 ` Marin David Condic
2003-07-20 17:53 ` Robert I. Eachus
2003-07-21 12:02 ` Marin David Condic
2003-07-21 20:31 ` Robert I. Eachus
2003-07-22 12:11 ` Marin David Condic
2003-07-22 12:26 ` Arnaud Charlet
2003-07-22 12:36 ` Marin David Condic
2003-07-22 13:23 ` Arnaud Charlet
2003-07-22 23:23 ` Marin David Condic
2003-07-22 23:46 ` Samuel Tardieu
2003-07-23 12:22 ` Marin David Condic
2003-07-23 22:17 ` Randy Brukardt
2003-07-24 1:47 ` Hyman Rosen
2003-07-24 3:36 ` tmoran
2003-07-24 3:44 ` Hyman Rosen
2003-07-24 8:02 ` Samuel Tardieu
2003-07-24 19:54 ` Randy Brukardt
2003-07-24 7:45 ` Dmitry A. Kazakov
2003-07-24 14:54 ` Warren W. Gay VE3WWG
2003-07-24 15:46 ` Dmitry A. Kazakov
2003-07-26 2:58 ` Warren W. Gay VE3WWG
2003-07-28 8:17 ` Dmitry A. Kazakov
2003-07-28 21:08 ` Warren W. Gay VE3WWG
2003-07-29 10:42 ` Marin David Condic
2003-07-29 13:47 ` Hyman Rosen
2003-07-29 17:04 ` Warren W. Gay VE3WWG
2003-07-24 12:01 ` Marin David Condic
2003-07-24 20:12 ` Randy Brukardt
2003-07-24 23:11 ` Robert I. Eachus
2003-07-26 12:52 ` Marin David Condic
2003-07-26 3:28 ` Warren W. Gay VE3WWG
2003-07-24 11:51 ` Marin David Condic
2003-07-24 20:32 ` Randy Brukardt
2003-07-26 3:16 ` Warren W. Gay VE3WWG
2003-07-26 13:16 ` Marin David Condic
2003-07-26 15:23 ` Nick Roberts
2003-07-26 15:48 ` Warren W. Gay VE3WWG
2003-07-27 11:36 ` Marin David Condic
2003-07-26 19:52 ` rleif
2003-07-26 13:01 ` Marin David Condic
2003-07-24 14:46 ` Warren W. Gay VE3WWG
2003-07-24 18:50 ` tmoran
2003-07-26 13:21 ` Marin David Condic
2003-07-23 4:02 ` Robert I. Eachus
2003-07-23 12:28 ` Marin David Condic
2003-07-24 16:06 ` Robert I. Eachus
2003-07-26 13:33 ` Larry Kilgallen
2003-07-26 17:27 ` Larry Kilgallen
[not found] ` <Pine.LNX.4.44.0307221518190.26977-10000Organization: LJK Software <etldVqgp8sE1@eisner.encompasserve.org>
2003-07-26 20:18 ` Warren W. Gay VE3WWG
2003-07-26 20:24 ` Larry Kilgallen
[not found] ` <Pine.LNX.4.44.0307221518190.26977-10000Organization: LJK Software <$TwrUBtoh25l@eisner.encompasserve.org>
2003-07-26 15:07 ` Warren W. Gay VE3WWG
2003-07-27 11:43 ` Marin David Condic
[not found] ` <Pine.LNX.4.44.0307221518190.26977-10000Organization: LJK Software <q5jLYypXp6Yg@eisner.encompasserve.org>
2003-07-27 21:52 ` Warren W. Gay VE3WWG
2003-07-28 2:45 ` Larry Kilgallen
2003-08-01 17:00 ` Warren W. Gay VE3WWG
2003-08-01 17:56 ` Larry Kilgallen
2003-08-01 18:17 ` Warren W. Gay VE3WWG
2003-08-01 18:48 ` Larry Kilgallen
2003-07-22 12:59 ` Lutz Donnerhacke
2003-07-22 5:16 ` Randy Brukardt
2003-07-22 12:02 ` Marin David Condic
2003-07-22 14:45 ` Nick Roberts
2003-07-23 1:08 ` Dave Thompson
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox