On 2023-09-23 12:25, Dmitry A. Kazakov wrote:
> On 2023-09-23 10:39, Niklas Holsti wrote:
>> On 2023-09-23 10:02, J-P. Rosen wrote:
>
>>> That's why I never check End_Of_File, but handle the End_Error
>>> exception. It always works.
>>
>> True, but it may not be convenient for the overall logic of the
>> program that reads the file. That program often wants do to something
>> with the contents, after reading the whole file, and having to enter
>> that part of the program through an exception does complicate the code
>> a little.
>
> It rather simplifies the code.
Oh?
> You exit the loop and do whatever is necessary there.
That is exactly what happens in the "while not End_Of_File" loop.
If you want to use End_Error instead, you have to add an exception
handler, and if you want to stay in the subprogram's statement sequence
without entering the subprogram-level exception handlers, you have to
add a block to contain the reading loop and make the exception handler
local to that block.
To me that looks like adding code -> more complex. Of course not much
more complex, but a little, as I said.
> Testing for the file end is unreliable and non-portable. Many types
> of files simply do not support that test.In other cases the test is
> not file immutable with the side effects that can change the program
> logic.
I suppose you are talking about the need for End_Of_File to possibly
read ahead past a line terminator? If not, please clarify.
That said, I certainly think that a program reading files should be
prepared to handle End_Error, especially if a file is read at several
places in the program (and not in a single loop as in the present program).