comp.lang.ada
 help / color / mirror / Atom feed
From: bobduff@world.std.com (Robert A Duff)
Subject: Re: Help with Exceptions!
Date: 1996/05/10
Date: 1996-05-10T00:00:00+00:00	[thread overview]
Message-ID: <Dr7J1p.18G@world.std.com> (raw)
In-Reply-To: JSA.96May10151348@organon.com


In article <JSA.96May10151348@organon.com>,
Jon S Anthony <jsa@organon.com> wrote:
>This is a nice trick which allows you to approximate Eiffel style
>exception capabilities.

I don't like Eiffel's exception capabilities.  The "retry" feature is
just a loop implemented with a goto (i.e. "retry" is really a backward
goto).  I much prefer the Ada style, where you explicitly code a loop
statement, and put a block-statement-with-exception-handler inside that.

Eiffel has some nice features for asserting things about loops (loop
invariants, and loop variants -- the latter helps prove that the loop
terminates in a finite number of steps).  But the retry construct seems
to by-pass all that -- how does one prove that a retry will ever
terminate?

Of course, the example below is *intentionally* an infinite loop, which
is fine.  If the user never types the right answer, it loops forever (or
recurs forever, until stack is exhausted, unless the compiler is clever
enough to turn the tail recursion into a jump).  (Is it "recurs" or
"recurses"?.  ;-) )

Whether or not this is user-friendly is a different question.

>> function Response (Prompt : String) return integer is
>> 
>>    line : ...
>>    Size : ...
>> 
>> begin
>>    Put (Prompt);
>>    Get_Line (...;
>>    return ...
>> exception
>>    when others =>
>>       Put_Line (...;  -- error message
>>       return Response(Prompt);
>> end Response;

- Bob




  reply	other threads:[~1996-05-10  0:00 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1996-05-07  0:00 Help with Exceptions! Robert Gelb
1996-05-07  0:00 ` Vincent Smeets
1996-05-07  0:00 ` John Herro
1996-05-07  0:00 ` Steve Howard
1996-05-07  0:00   ` Robert Dewar
     [not found]   ` <4mqio5$a8b@news.sanders.lockheed.com>
1996-05-09  0:00     ` Robert L. Spooner, AD3K
1996-05-10  0:00   ` Jon S Anthony
1996-05-10  0:00     ` Robert A Duff [this message]
     [not found] ` <318F94D9.35AB@io.com>
1996-05-10  0:00   ` George F.Rice
1996-05-13  0:00     ` Dave Jones
1996-05-13  0:00   ` Robert I. Eachus
1996-05-14  0:00     ` John Herro
1996-05-14  0:00       ` Robert I. Eachus
1996-05-14  0:00   ` Theodore E. Dennison
1996-05-14  0:00     ` Robert A Duff
1996-05-14  0:00 ` Michel Gauthier
1996-05-14  0:00   ` Robert A Duff
1996-05-15  0:00     ` Norman H. Cohen
1996-05-15  0:00       ` Robert A Duff
1996-05-15  0:00 ` Michel Gauthier
1996-05-16  0:00 ` Jon S Anthony
1996-05-16  0:00 ` Jon S Anthony
1996-05-16  0:00   ` Robert A Duff
  -- strict thread matches above, loose matches on Subject: below --
1996-05-09  0:00 tmoran
replies disabled

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