* Re: Help with Exceptions! (fwd)
@ 1996-05-08 0:00 Dave
1996-05-08 0:00 ` Ray Blaak
0 siblings, 1 reply; 2+ messages in thread
From: Dave @ 1996-05-08 0:00 UTC (permalink / raw)
There must be something wrong with my provider's news server. Once
again, a post did not "take" the first time that I sent it. Hopefully,
everything will work this time.
---------- Forwarded message ----------
Robert Gelb wrote:
>
> I am doing a homework assignment in ADA and I am confused by the
> exceptions. My question is this: when I catch an error with the
> exception, how can I go back to statement where the error occured (or the
> statement next to it)?
> I know in Visual Basic you can do a 'resume next' statement which returns
> you to the statement next to the one where the error occured
>
> VB:
> sub test()
> dim x as integer
> on error goto ErrHandler
> x = 1000000 'error occurs here
> x = 3 'resume next returns the
> 'execution here
> Exit sub
> ErrHandler:
> resume next 'return execution
> end sub
>
> ADA:
> procedure test is
> x:integer;
> begin
> x:=10000000;
> x:=3;
> exception
> when CONSTRAINT_ERROR=>
> put("Error");
> --how can I go back to 'x:=3' statement
> end test;
> Bob --
I have not tried this, and I do *not* recommend this (See my note below.),
but it should work. You can put a goto in the exception part of a block as
long as you leave the block which raised the exception.
procedure test is
x:integer ;
begin
begin
x := 10000000 ;
exception
when CONSTRAINT_ERROR =>
goto Next_Block ;
end ;
<<Next_Block>>
begin
x := 3 ;
exception
when CONSTRAINT_ERROR =>
RETURN ;
end ;
RETURN ;
end test;
Please note that this code is *UGLY*. Generally, when programming in Ada,
if you produce ugly code, that is a sign that there is a better solution to
your problem. Many Ada programmers produce ugly code by abusing Ada's
excellent exception handling facilities, so you might want to reconsider
your approach.
-- Dave Jones
davedave@io.com
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: Help with Exceptions! (fwd)
1996-05-08 0:00 Help with Exceptions! (fwd) Dave
@ 1996-05-08 0:00 ` Ray Blaak
0 siblings, 0 replies; 2+ messages in thread
From: Ray Blaak @ 1996-05-08 0:00 UTC (permalink / raw)
Actually, the gotos and extra returns are unnecessary, for the natural control
flow will accomplish the same thing:
procedure test is
x:integer;
begin
begin
x := 10000000;
exception
when Constraint_Error => null;
end;
begin
x := 3;
exception
when Constraint_Error => null;
end;
end test;
Dave <davedave@io.com> writes:
>procedure test is
> x:integer ;
>begin
> begin
> x := 10000000 ;
> exception
> when CONSTRAINT_ERROR =>
> goto Next_Block ;
> end ;
><<Next_Block>>
> begin
> x := 3 ;
> exception
> when CONSTRAINT_ERROR =>
> RETURN ;
> end ;
> RETURN ;
>end test;
Cheers,
Ray Blaak
blaak@mda.ca
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~1996-05-08 0:00 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1996-05-08 0:00 Help with Exceptions! (fwd) Dave
1996-05-08 0:00 ` Ray Blaak
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox