Talk About Network

Google





Programming > Ada > Re: About Strin...
Latest [ Topics | Posts ] Archive Post A New Topic Post a Reply
<< Topic < Post Post 5 of 38 Topic 5743 of 6006
Post > Topic >>

Re: About String

by Niklas Holsti <niklas.holsti@[EMAIL PROTECTED] > Jun 8, 2008 at 09:47 AM

Chris Moore wrote:
> Pascal Obry wrote:
> 
>> Simon Wright a écrit :
>>
>>> You might want to handle the problem locally:
>>>
>>>    procedure Patati_Patata is
>>>    begin
>>>       declare
>>>          S : String := A_Function_Raising_Constraint_Error;
>>>       begin
>>>          --  some code
>>>       exception
>>>          when Constraint_Error =>
>>>             --  deal with the problem and carry on ..
>>>       end;
>>>       --  .. here
>>
>>
>> This one is wrong. The exception on the declare section can't be 
>> handled on the local block as it will raised outside of the block.
>>
>> Pascal.
>>
> 
> You are correct.

Yes.

> I have to say this is an entirely non-intuitive "feature" of the
language.

I beg to differ. The program should be read as

     declare <some variables>
     begin <do something with those variables> end;

The exception handler is within the "begin..end" block, not on the 
"declare". (Indenting the "begin..exception..end" structure one 
level beyond the "declare" would make this more visible, but is not 
common practice.)

> We talk about declare blocks and yet the 
> scope of the exception handlers doesn't include the declarations!

The declared variables are visible in the whole "begin..end" block, 
including in the exception handler. If the declarations raise an 
exception, it would be madness to try to handle it within the 
"begin..end" block, because the handler could try to use 
un-elaborated (non-existent) variables.

The solution is just to add one more "begin..end" block, enclosing 
the "declare .. begin .. end", and handle the exceptions in this 
outer "begin..end" block. Or handle the exceptions in the 
subprogram's "begin..end" block and nest the "declare..begin..end" 
within the subprograms "begin..end".

That said, I admit that I, too, have made this mistake once or 
twice. But not lately.

I wonder if it would be a good idea for Ada to allow an exception 
handler also in the "declare" part, as follows:

    -- NOT Ada!
    declare <some variables>
    exception <handle exceptions raised in the declarations>
    begin <some statements>
    exception <handle exceptions raised in the statements>
    end;

Of course, in this proposal the declaration-exception handler would 
not have access to the declared variables.

-- 
Niklas Holsti
Tidorum Ltd
niklas holsti tidorum fi
       .      @[EMAIL PROTECTED]
       .
 




 38 Posts in Topic:
About String
=?ISO-8859-1?Q?S=E9bastie  2008-06-06 17:29:43 
Re: About String
Simon Wright <simon.j.  2008-06-07 17:18:12 
Re: About String
Pascal Obry <pascal@[E  2008-06-07 19:01:07 
Re: About String
Chris Moore <zmower@[E  2008-06-07 23:13:16 
Re: About String
Niklas Holsti <niklas.  2008-06-08 09:47:30 
Re: About String
"Dmitry A. Kazakov&q  2008-06-08 09:35:31 
Re: About String
Sebastien Morand <seb.  2008-06-08 10:29:53 
Re: About String
"Dmitry A. Kazakov&q  2008-06-08 12:53:16 
Re: About String
Niklas Holsti <niklas.  2008-06-08 14:14:04 
Re: About String
"Dmitry A. Kazakov&q  2008-06-08 15:16:54 
Re: About String
Niklas Holsti <niklas.  2008-06-08 20:17:33 
Re: About String
"Dmitry A. Kazakov&q  2008-06-09 09:26:26 
Re: About String
Chris Moore <zmower@[E  2008-06-08 19:26:21 
Re: About String
Robert A Duff <bobduff  2008-06-08 14:32:36 
Re: About String
Simon Wright <simon.j.  2008-06-08 12:13:50 
Re: About String
Sebastien Morand <seb.  2008-06-08 19:03:17 
Re: About String
Martin <martin.dowie@[  2008-06-08 04:48:56 
Conditional declarations (was: About String)
"Dmitry A. Kazakov&q  2008-06-08 15:17:03 
Re: About String
Maciej Sobczak <see.my  2008-06-08 13:51:07 
Re: About String
Robert A Duff <bobduff  2008-06-08 17:19:11 
Re: About String
"Dmitry A. Kazakov&q  2008-06-09 09:14:30 
Re: About String
Georg Bauhaus <rm.dash  2008-06-09 11:43:36 
Re: About String
"Dmitry A. Kazakov&q  2008-06-09 12:25:02 
Re: About String
=?ISO-8859-1?Q?S=E9bastie  2008-06-09 10:42:18 
Re: About String
Georg Bauhaus <rm.dash  2008-06-09 13:43:21 
Re: About String
"Dmitry A. Kazakov&q  2008-06-09 14:03:37 
Re: About String
Robert A Duff <bobduff  2008-06-15 15:38:08 
Re: About String
"Dmitry A. Kazakov&q  2008-06-15 22:52:45 
Re: About String
Robert A Duff <bobduff  2008-06-15 18:06:00 
Re: About String
"Dmitry A. Kazakov&q  2008-06-16 10:31:03 
Re: About String
Robert A Duff <bobduff  2008-06-16 15:17:15 
Re: About String
"Dmitry A. Kazakov&q  2008-06-16 22:30:12 
Re: About String
Georg Bauhaus <rm.tsoh  2008-06-17 00:02:51 
Re: About String
Robert A Duff <bobduff  2008-06-16 19:04:54 
Re: About String
Georg Bauhaus <rm.dash  2008-06-09 13:00:44 
Re: About String
Robert A Duff <bobduff  2008-06-15 15:48:49 
Re: About String
Britt Snodgrass <britt  2008-06-09 07:27:05 
Re: About String
Robert A Duff <bobduff  2008-06-15 15:50:13 

Post A Reply:
  Go here to Signup

AddThis Feed Button


About - Advertising - Contact - Frequently Asked Questions - Privacy Policy - Terms of Use - Signup

Contact
localhost-V2008-12-19 Wed Jan 7 14:18:13 PST 2009.