comp.lang.ada
 help / color / mirror / Atom feed
From: "Steve" <nospam_steved94@attbi.com>
Subject: Re: I/O - exception handling
Date: Mon, 26 May 2003 16:31:54 GMT
Date: 2003-05-26T16:31:54+00:00	[thread overview]
Message-ID: <_jrAa.4696$_t5.1827@rwcrnsc52.ops.asp.att.net> (raw)
In-Reply-To: bat3ee$2ec$1@ns.felk.cvut.cz

Here's an approach that only uses close once, but it isn't pretty either.

 begin
    begin
       begin
          Open (File, Name => "test.txt", Mode => In_File);
       exception
            when others =>
                null; -- report exception opening file ???
                return;
       end;
       Get_Line (File, S1);
       Get_Line (File, S2);
    exception
       when others =>
           null; -- report exception???
    end;
    Close (File);
 exception
    when others =>
      null; -- report exception ???
 end Read_Something;

Steve
(The Duck)

"Sergey Koshcheyev" <serko84@hotmail.com> wrote in message
news:bat3ee$2ec$1@ns.felk.cvut.cz...
> Hi,
>
> I have this problem: I have a simple piece of code opening a file, reading
a
> few lines, then closing it. Now, I want this piece of code to be "safe",
> i.e. not to leak any resources (the open file) in case of errors and not
to
> propagate any exceptions. What is the best style to write this code?
>
> Currently, I have something like (not compiled):
>
> procedure Read_Something (...) is
>    use Ada.Text_IO;
>    use Ada.Strings.Unbounded;
>    use Ada.Strings.Unbounded.Text_IO;
>    --  GNAT-specific package, I believe
>
>    File : File_Type;
>    S1, S2 : Unbounded_String;
>
> begin
>    Open (File, Name => "test.txt", Mode => In_File);
>    Get_Line (File, S1);
>    Get_Line (File, S2);
>    Close (File);
>
> exception
>    when others =>
>       if Is_Open (File) then
>          begin
>             Close (File);
>          exception
>             --  Close can raise exceptions too!
>             when others => null;
>          end;
>       end if;
> end Read_Something;
>
> However, this looks ugly to me, since I have to close the file in two
> places, and also guard for exceptions while handling exceptions. Is there
a
> better solution or is this sort of thing OK in the Ada way?
>
> Sergey.
>
>





  parent reply	other threads:[~2003-05-26 16:31 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 [this message]
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
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