From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Exceptions and out procedure arguments (using GNAT GPL)
Date: Tue, 19 Jun 2007 22:07:59 +0200
Date: 2007-06-19T22:07:46+02:00 [thread overview]
Message-ID: <u1ofbjnyd74k$.9604oalmbm4q$.dlg@40tude.net> (raw)
In-Reply-To: 1182266486.650797.262430@a26g2000pre.googlegroups.com
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.
That is independent on the way an in-out parameter is passed. If the
parameter is by-reference, then the subprogram shall document all side
effects on it, which cannot be rolled back.
(Thee is a quite specific case of non-initialized out parameters, but I
don't like the idea of using that pattern rather than result anyway.)
--
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de
next prev parent reply other threads:[~2007-06-19 20:07 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 [this message]
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
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