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.
next prev parent 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