comp.lang.ada
 help / color / mirror / Atom feed
From: Sergey Koshcheyev <serko84@hotmail.com>
Subject: Re: I/O - exception handling
Date: Wed, 28 May 2003 09:33:17 +0200
Date: 2003-05-28T09:33:17+02:00	[thread overview]
Message-ID: <bb1oo9$1l6q$1@ns.felk.cvut.cz> (raw)
In-Reply-To: <3ED4114A.5060204@spam.com>

Jeffrey Carter wrote:
> I'm not sure what all the fuss is about. Close can only raise 
> Status_Error, and only if the file is not open (ARM A.8.2).

Is it really so? The ARM says (regarding Close):

"The exception Status_Error is propagated if the given file is not open."

I'm not a language lawyer, but I don't think this sentence forbids any 
other behavior (like Device_Errors or Use_Errors).

 > Is_Open may not raise an exception (ARM A.8.2).

ARM A.8.2 (29) also says:

"An implementation may propagate Name_Error or Use_Error if an attempt 
is made to use an I/O feature that cannot be supported by the 
implementation due to limitations in the external environment. Any such 
restriction should be documented."

Since Is_Open is an I/O feature, this means to me that it may raise one 
of these exceptions too.

Or am I being way too "legal"?

> So the pattern
> 
> begin
>    Open (File, ...);
> 
>    -- Process File
> 
>    Close (File);
>    -- If Open failed, we do not get here, so this cannot
>    -- raise an exception
> exception
> when others =>
>    if Is_Open (File) then
>       Close (File);
>    end if;
> end;
> 
> is completely safe.

This has "Close (File)" in two places, so it is also against the "do 
everything only once" principle.

Maybe my requirements are too hard and unrealistic, but anyway, I have 
already found an almost perfect solution, described in one of my earlier 
posts (where I ignore errors from Close).

Sergey.




  reply	other threads:[~2003-05-28  7:33 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-05-26 13:05 I/O - exception handling Sergey Koshcheyev
2003-05-26 13:33 ` Preben Randhol
2003-05-26 14:11   ` Sergey Koshcheyev
2003-05-26 14:29     ` Preben Randhol
2003-05-26 14:31       ` Preben Randhol
2003-05-26 14:39       ` Sergey Koshcheyev
2003-05-26 16:57         ` Preben Randhol
2003-05-26 17:48           ` Sergey Koshcheyev
2003-05-26 18:08             ` Preben Randhol
2003-05-26 18:48               ` Sergey Koshcheyev
2003-05-27  1:24                 ` Hyman Rosen
2003-05-27  2:20                   ` Larry Kilgallen
2003-05-27  2:38                     ` Hyman Rosen
2003-05-27 16:17                       ` Warren W. Gay VE3WWG
2003-05-27 19:40                         ` Hyman Rosen
2003-05-27 20:18                           ` Warren W. Gay VE3WWG
2003-05-27 10:31                     ` Larry Kilgallen
2003-05-27 21:43                       ` Hyman Rosen
2003-05-27  5:33           ` Robert I. Eachus
2003-05-27 13:53             ` Preben Randhol
2003-05-27 12:01           ` Lutz Donnerhacke
2003-05-26 14:12   ` Simon Wright
2003-05-26 14:24     ` Preben Randhol
2003-05-26 14:52 ` Jean-Pierre Rosen
2003-05-26 15:26   ` Sergey Koshcheyev
2003-05-26 15:45 ` Hyman Rosen
2003-05-26 16:25   ` Sergey Koshcheyev
2003-05-27  1:35     ` Hyman Rosen
2003-05-28 21:47       ` Robert A Duff
2003-05-26 16:31 ` Steve
2003-05-27  2:36 ` Anisimkov
2003-05-27  7:21   ` Sergey Koshcheyev
2003-05-27 13:47     ` Preben Randhol
2003-05-27 19:01       ` Sergey Koshcheyev
2003-05-27 16:50     ` Dmitriy Anisimkov
2003-05-27 18:11       ` Ludovic Brenta
2003-05-28  1:27   ` Jeffrey Carter
2003-05-28  7:33     ` Sergey Koshcheyev [this message]
2003-05-28  9:08       ` Preben Randhol
2003-05-28 18:07         ` Randy Brukardt
2003-05-28 22:51           ` Robert I. Eachus
2003-05-29  2:03             ` Jeffrey Carter
2003-05-29  8:39               ` Manuel Collado
2003-05-30  6:56           ` Preben Randhol
2003-05-30  9:33             ` Larry Kilgallen
2003-05-30 11:13               ` Preben Randhol
2003-05-30 11:39                 ` Larry Kilgallen
2003-05-30 11:41                   ` Preben Randhol
2003-05-30 19:51                 ` Randy Brukardt
2003-06-01 16:08                   ` Robert I. Eachus
2003-06-03  0:18                     ` Randy Brukardt
2003-06-03  4:16                       ` Robert I. Eachus
     [not found] ` <slrnbd6m69.vh.lutz@taranis.iks-jena.de>
2003-05-27 14:06   ` Preben Randhol
2003-05-27 15:59     ` Lutz Donnerhacke
2003-05-27 19:05   ` Sergey Koshcheyev
2003-05-27 19:32     ` Larry Kilgallen
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox