comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Exceptions and out procedure arguments (using GNAT GPL)
Date: Wed, 20 Jun 2007 10:02:31 +0200
Date: 2007-06-20T09:59:42+02:00	[thread overview]
Message-ID: <1o6rnwgzezcr2$.mv31ct5mmmso$.dlg@40tude.net> (raw)
In-Reply-To: 4678c6a0$0$23135$9b4e6d93@newsspool1.arcor-online.net

On Wed, 20 Jun 2007 08:21:16 +0200, Georg Bauhaus wrote:

> Dmitry A. Kazakov wrote:
>> On Tue, 19 Jun 2007 08:21:26 -0700, Adam Beneschan wrote:
>> 
>>> My gut feeling is that, in
>>> the abstract, a subprogram should either produce a result *or*
>>> (perhaps) raise an exception, but not both; in general, if your
>>> definition of a subprogram is that, under certain conditions, the
>>> subprogram will raise an exception AND the caller can expect a certain
>>> value to be returned (whether in an OUT parameter or an IN OUT or a
>>> global or in something pointed to by an access parameter or whatever)
>>> even though an exception is raised, the design is wrong.  It's better
>>> to use an OUT status code of some sort in that case.
>> 
>> I don't think this is a good advice. In my view a right design assumes that
>> whether an exception is propagated or not, the subprogram should not leave
>> anything in an undefined state.
> 
> Including unititialised in-variables? Partially initialised records?

OK, clearly this applies only to the things the subprogram is responsible
for.

> And can you document all side effects on by reference (or global)
> variables at all, in the presence of exceptions?

That depends on the meaning of "all." Certainly, we cannot control
side-effects on the CPU's cache or on the green gas emission caused by
consuming electricity during subprogram execution...

-- 
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de



  reply	other threads:[~2007-06-20  8:02 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-06-16  1:05 Exceptions and out procedure arguments (using GNAT GPL) Fionn Mac Cumhaill
2007-06-16  1:53 ` Anh Vo
2007-06-16  2:50 ` Brian May
2007-06-16  3:08 ` Randy Brukardt
2007-06-16  6:55 ` Dmitry A. Kazakov
2007-06-18 15:44 ` Adam Beneschan
2007-06-19  5:23   ` Fionn Mac Cumhaill
2007-06-19  7:34     ` Maciej Sobczak
2007-06-19 15:21       ` Adam Beneschan
2007-06-19 20:07         ` Dmitry A. Kazakov
2007-06-19 21:20           ` Adam Beneschan
2007-06-20  6:16             ` Georg Bauhaus
2007-06-20  8:01             ` Dmitry A. Kazakov
2007-06-20  8:45               ` Georg Bauhaus
2007-06-20  9:29                 ` Dmitry A. Kazakov
2007-06-20  6:21           ` Georg Bauhaus
2007-06-20  8:02             ` Dmitry A. Kazakov [this message]
2007-06-20  8:46               ` Georg Bauhaus
2007-06-20  9:29                 ` Dmitry A. Kazakov
2007-06-20 10:13                   ` Georg Bauhaus
2007-06-20 12:58                     ` Dmitry A. Kazakov
2007-06-20 14:16                       ` Georg Bauhaus
2007-06-20 18:22                         ` Dmitry A. Kazakov
2007-06-20 19:16                           ` Georg Bauhaus
2007-06-20 20:40                             ` Dmitry A. Kazakov
2007-06-21  9:52                               ` Georg Bauhaus
2007-06-21 13:48                                 ` Dmitry A. Kazakov
2007-06-22 18:15                                   ` Georg Bauhaus
2007-06-22 19:45                                     ` Dmitry A. Kazakov
2007-06-20 15:15         ` Fionn Mac Cumhaill
2007-06-19 21:40     ` Randy Brukardt
replies disabled

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