From: Doctor Who <doc@tardis.org>
Subject: Re: Discriminants or Constructor Function for Limited Types
Date: Mon, 09 May 2022 12:19:19 +0200 [thread overview]
Message-ID: <sjqh7hh9pv2gqalco1s50l390454mc3hf3@4ax.com> (raw)
In-Reply-To: t590fe$3ef$1@gioia.aioe.org
On Sun, 8 May 2022 20:00:15 +0200, "Dmitry A. Kazakov"
<mailbox@dmitry-kazakov.de> wrote:
>On 2022-05-08 19:19, Doctor Who wrote:
>> On Sun, 8 May 2022 10:37:48 +0200, "Dmitry A. Kazakov"
>
>>> Note, that your code is already unsafe because nobody knows if
>>> Create_or_Open_Output always opens the file and because there is no
>>> guarantee that the file is closed, while the design
>>>
>>> declare
>>> Output_File : Some_File_Type;
>>> begin
>>> Write_Output (Output_File, Data);
>>> end;
>>>
>>> is 100% safe.
>>
>> Not in the case that your data space is exhausted, in that case
>> Write_Output will fail, because you have no checks of free space
>> before writing.
>
>Upon a write error an exception will propagate and Output_File will go
>out of the scope. The file will be closed and the exception will
>continue its way. This is a safe behavior. Randy's code is unsafe and
>requires catching and re-raising I/O exceptions in the client code.
>
>This is an illustration why exceptions should be allowed to propagate
>out of Finalize. When Finalize is used to close a handle this may fail
>and there is no way to retry inside Finalize. The choice in Ada is
>between aborting the program or sweeping the problem under the rug
>ignoring the problem. A more sane approach would be to propagate
>exception out of Finalize indicating the problem.
if you do a check before write there is no need to rise and propagate
an exception.
next prev parent reply other threads:[~2022-05-09 10:19 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-05-04 9:02 Discriminants or Constructor Function for Limited Types R R
2022-05-04 9:40 ` Jeffrey R.Carter
2022-05-04 9:47 ` Dmitry A. Kazakov
2022-05-04 23:49 ` Randy Brukardt
2022-05-05 6:56 ` Dmitry A. Kazakov
2022-05-06 1:53 ` Randy Brukardt
2022-05-06 8:48 ` Dmitry A. Kazakov
2022-05-07 3:26 ` Randy Brukardt
2022-05-07 14:55 ` Dmitry A. Kazakov
2022-05-08 2:32 ` Randy Brukardt
2022-05-08 8:37 ` Dmitry A. Kazakov
2022-05-08 17:19 ` Doctor Who
2022-05-08 18:00 ` Dmitry A. Kazakov
2022-05-08 18:07 ` Doctor Who
2022-05-09 8:52 ` Niklas Holsti
2022-05-09 9:45 ` Dmitry A. Kazakov
2022-05-09 10:19 ` Doctor Who [this message]
2022-05-09 11:15 ` Dmitry A. Kazakov
2022-05-09 12:05 ` Doctor Who
2022-05-09 12:31 ` Dmitry A. Kazakov
2022-05-10 4:48 ` Randy Brukardt
2022-05-10 6:18 ` Dmitry A. Kazakov
2022-05-04 15:05 ` AdaMagica
2022-05-05 9:59 ` R R
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox