comp.lang.ada
 help / color / mirror / Atom feed
From: Simon Wright <simon.j.wright@mac.com>
Subject: Re: About String
Date: Sat, 07 Jun 2008 17:18:12 +0100
Date: 2008-06-07T17:18:12+01:00	[thread overview]
Message-ID: <m2od6d5id7.fsf@mac.com> (raw)
In-Reply-To: g2bs6b$h2m$1@registered.motzarella.org

S�bastien Morand <seb.morand@gmail.com> writes:

> So the main problem is error management. If one function raise
> exception, the exception can't be catch except with the following trick:

I don't know why you call it a trick! Perfectly standard Ada ...

> procedure Patati_Patata is
> begin
> 	declare
> 		s: String := A_Function_Raising_Constraint_Error;
> 	begin
> 		--  some code
> 		null;
> 	end;
> exception
> 	when Constraint_Error =>
> 		Put_Line("I got an error");
> end;
>
> Is there nicer way to do that? I'm trying to avoid Unbounded_String
> because of the conversion when mixing Unbounded_String and String.

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
   end Patati_Patata;

In general I don't like exception handlers which output a message and
then allow the procedure to look as though it has succeeded when in
fact something unforeseen has occurred, and is waiting to cause
mysterious problems much much later. Exceptions to this guideline
could include 'last-chance' exception handlers in tasks and the main
program; but if you are controlling missiles, medical equipment or
money it's probably better not to just stumble on in the hope that
things will turn out all right.



  reply	other threads:[~2008-06-07 16:18 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-06-06 17:29 About String Sébastien Morand
2008-06-07 16:18 ` Simon Wright [this message]
2008-06-07 17:01   ` Pascal Obry
2008-06-07 22:13     ` Chris Moore
2008-06-08  6:47       ` Niklas Holsti
2008-06-08  7:35         ` Dmitry A. Kazakov
2008-06-08 10:29           ` Sebastien Morand
2008-06-08 10:53             ` Dmitry A. Kazakov
2008-06-08 11:14           ` Niklas Holsti
2008-06-08 13:16             ` Dmitry A. Kazakov
2008-06-08 17:17               ` Niklas Holsti
2008-06-09  7:26                 ` Dmitry A. Kazakov
2008-06-08 11:48           ` Martin
2008-06-08 13:17             ` Conditional declarations (was: About String) Dmitry A. Kazakov
2008-06-08 18:26           ` About String Chris Moore
2008-06-08 18:32         ` Robert A Duff
2008-06-08 20:51           ` Maciej Sobczak
2008-06-08 21:19             ` Robert A Duff
2008-06-09  7:14               ` Dmitry A. Kazakov
2008-06-09  9:43                 ` Georg Bauhaus
2008-06-09 10:25                   ` Dmitry A. Kazakov
2008-06-09 10:42                     ` Sébastien Morand
2008-06-09 11:43                     ` Georg Bauhaus
2008-06-09 12:03                       ` Dmitry A. Kazakov
2008-06-15 19:38                 ` Robert A Duff
2008-06-15 20:52                   ` Dmitry A. Kazakov
2008-06-15 22:06                     ` Robert A Duff
2008-06-16  8:31                       ` Dmitry A. Kazakov
2008-06-16 19:17                         ` Robert A Duff
2008-06-16 20:30                           ` Dmitry A. Kazakov
2008-06-16 22:02                           ` Georg Bauhaus
2008-06-16 23:04                             ` Robert A Duff
2008-06-09 11:00               ` Georg Bauhaus
2008-06-09 14:27                 ` Britt Snodgrass
2008-06-15 19:50                   ` Robert A Duff
2008-06-15 19:48                 ` Robert A Duff
2008-06-08 11:13     ` Simon Wright
2008-06-08 19:03       ` Sebastien Morand
replies disabled

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