From: dnew@zloty.fv.com (Darren New)
Subject: Re: Building blocks (Was: Design By Contract)
Date: 1997/09/10
Date: 1997-09-10T00:00:00+00:00 [thread overview]
Message-ID: <5v6ugr$l5h@newshub.atmnet.net> (raw)
In-Reply-To: 5v5l26$h62$3@miranda.gmrc.gecm.com
>Note that there is no third option. Also note that the following are
>forbidden:
>
>* Silent failure. If the server cannot fulfil its contract then it *must*
> raise an exception.
>
>* Exceptions as normal control structure. An exception indicates that
> something has gone wrong: things are not working as intended.
Elaborating: Actually, I think the theoretical basis for the exceptions
are that you cannot catch an exception and continue on. For example,
if your calling code says
x := him.blah(y)
fooble(x)
then if him.blah has a postcondition that Result>0, fooble can rely
on getting an argument whose value is > 0. If him.blah fails to
return the value that meets the postcondition, an exception is raised
and passed to the caller. Hence, it is *impossible* to call fooble
here with a negative value for x. There is no equivalent of
try { x := him.blah(y) } catch (...) { /* do nothing */ }
fooble(x)
If every line of code does not fulfill its postconditions, it's impossible
to execute the following line. And *that* I believe is what makes
the exception mechanism helpful in reasoning about your code.
Of course, it's also helpful that you do not have to catch errors in
the wrong place. I very much dislike the Java mechanism when I try
to implement an interface that does not throw IOException (for example)
and I'm doing IO, so I have to figure out what the client is likely
to want in terms of error handling, making reuse difficult. There are
ways around it, but it's kludgey.
-- Darren
next prev parent reply other threads:[~1997-09-10 0:00 UTC|newest]
Thread overview: 132+ messages / expand[flat|nested] mbox.gz Atom feed top
1997-08-21 0:00 Critique of Ariane 5 paper (finally!) aek
[not found] ` <33FC66AD.9A0799D4@calfp.co.uk>
1997-08-22 0:00 ` Robert S. White
1997-08-22 0:00 ` Samuel Mize
1997-08-22 0:00 ` Samuel Mize
1997-08-23 0:00 ` Ken Garlington
[not found] ` <33FFA4B1.3543@flash.net>
1997-08-26 0:00 ` Nick Leaton
[not found] ` <3403940F.4154@pseserv3.fw.hac.com>
1997-08-27 0:00 ` Design By Contract Ted Velkoff
[not found] ` <JSA.97Aug27180328@alexandria.organon.com>
1997-08-28 0:00 ` W. Wesley Groleau x4923
1997-09-03 0:00 ` Don Harrison
1997-09-03 0:00 ` Jon S Anthony
1997-09-04 0:00 ` Don Harrison
[not found] ` <5u3c6v$gtf$2@miranda.gmrc.gecm.com>
[not found] ` <34058808.3BF@pseserv3.fw.hac.com>
1997-08-28 0:00 ` Darren New
1997-08-28 0:00 ` Patrick Doyle
1997-09-06 0:00 ` Joachim Durchholz
1997-09-06 0:00 ` Patrick Doyle
[not found] ` <EFM140.Fy9@syd.csa.com.au>
1997-08-28 0:00 ` Robert Dewar
1997-08-29 0:00 ` Don Harrison
1997-08-28 0:00 ` Jon S Anthony
1997-08-29 0:00 ` Patrick Doyle
1997-08-29 0:00 ` Jon S Anthony
[not found] ` <EFqDw0.3x7@ecf.toronto.edu>
[not found] ` <JSA.97Aug30145354@alexandria.organon.com>
1997-09-01 0:00 ` Patrick Doyle
1997-08-29 0:00 ` Don Harrison
1997-08-29 0:00 ` Jon S Anthony
[not found] ` <EFqE8L.4Eq@ecf.toronto.edu>
[not found] ` <JSA.97Aug30145058@alexandria.organon.com>
1997-09-01 0:00 ` Patrick Doyle
1997-09-02 0:00 ` Don Harrison
1997-09-02 0:00 ` Jon S Anthony
1997-09-03 0:00 ` Don Harrison
[not found] ` <JSA.97Sep3201329@alexandria.organon.com>
1997-09-04 0:00 ` Paul Johnson
1997-09-05 0:00 ` Jon S Anthony
[not found] ` <5un58u$9ih$1@gonzo.sun3.iaf.nl>
1997-09-06 0:00 ` Building blocks (Was: Design By Contract) Joachim Durchholz
1997-09-08 0:00 ` Paul Johnson
1997-09-08 0:00 ` Brian Rogoff
1997-09-09 0:00 ` W. Wesley Groleau x4923
1997-09-09 0:00 ` Matthew Heaney
1997-09-09 0:00 ` W. Wesley Groleau x4923
1997-09-10 0:00 ` Robert A Duff
1997-09-12 0:00 ` Jon S Anthony
1997-09-09 0:00 ` Brian Rogoff
1997-09-10 0:00 ` Paul Johnson
1997-09-10 0:00 ` Darren New [this message]
1997-09-10 0:00 ` Matthew Heaney
1997-09-10 0:00 ` Robert Dewar
1997-09-12 0:00 ` Jon S Anthony
1997-09-12 0:00 ` Robert Dewar
1997-09-16 0:00 ` Brian Rogoff
1997-09-12 0:00 ` Paul Johnson
1997-09-14 0:00 ` Robert Dewar
1997-09-14 0:00 ` Robert Dewar
1997-09-15 0:00 ` John G. Volan
1997-09-14 0:00 ` Robert Dewar
1997-09-09 0:00 ` Veli-Pekka Nousiainen
1997-09-09 0:00 ` Veli-Pekka Nousiainen
1997-09-09 0:00 ` Jon S Anthony
1997-09-08 0:00 ` Design By Contract Nick Leaton
1997-09-08 0:00 ` Matthew Heaney
1997-09-09 0:00 ` Paul Johnson
[not found] ` <EFzLn7.481@ecf.toronto.edu>
1997-09-04 0:00 ` Jon S Anthony
[not found] ` <EFz0pD.E6n@syd.csa.com.au>
1997-09-05 0:00 ` W. Wesley Groleau x4923
1997-09-05 0:00 ` subjectivity W. Wesley Groleau x4923
1997-09-05 0:00 ` subjectivity Matthew Heaney
1997-09-10 0:00 ` subjectivity Don Harrison
1997-09-12 0:00 ` subjectivity Jon S Anthony
1997-09-16 0:00 ` subjectivity Don Harrison
1997-09-16 0:00 ` subjectivity Jon S Anthony
1997-09-10 0:00 ` subjectivity Don Harrison
1997-09-10 0:00 ` subjectivity W. Wesley Groleau x4923
1997-09-11 0:00 ` subjectivity Don Harrison
1997-09-10 0:00 ` subjectivity W. Wesley Groleau x4923
[not found] ` <JSA.97Sep4172912@alexandria.organon.com>
[not found] ` <EG0oz8.F6M@syd.csa.com.au>
[not found] ` <EG0rp7.GtL@syd.csa.com.au>
1997-09-05 0:00 ` Design By Contract Matthew Heaney
1997-09-05 0:00 ` Jon S Anthony
1997-09-05 0:00 ` Nick Leaton
1997-09-08 0:00 ` Jon S Anthony
1997-09-09 0:00 ` Nick Leaton
1997-09-10 0:00 ` Paul Johnson
1997-09-06 0:00 ` Patrick Doyle
1997-09-09 0:00 ` Robert A Duff
1997-09-09 0:00 ` Matthew Heaney
1997-09-02 0:00 ` Joerg Rodemann
1997-09-02 0:00 ` Jon S Anthony
[not found] ` <349224633wnr@eiffel.demon.co.uk>
1997-08-27 0:00 ` Design by Contract Robert Dewar
1997-08-29 0:00 ` Don Harrison
[not found] ` <3406BEF7.2FC3@flash.net>
[not found] ` <3406E0F7.6FF7ED99@calfp.co.uk>
1997-09-02 0:00 ` Critique of Ariane 5 paper (finally!) Ken Garlington
-- strict thread matches above, loose matches on Subject: below --
1997-09-09 0:00 Building blocks (Was: Design By Contract) Marc Wachowitz
1997-09-15 0:00 ` Joachim Durchholz
1997-09-17 0:00 ` Paul Johnson
1997-09-18 0:00 ` Robert Dewar
1997-09-18 0:00 ` Jon S Anthony
1997-09-18 0:00 ` Stephen Leake
1997-09-18 0:00 ` Mark L. Fussell
1997-09-19 0:00 ` Robert A Duff
1997-09-20 0:00 ` Joachim Durchholz
1997-09-22 0:00 ` Matthew Heaney
1997-09-23 0:00 ` Joachim Durchholz
1997-09-23 0:00 ` Veli-Pekka Nousiainen
1997-10-03 0:00 ` Robert I. Eachus
1997-10-04 0:00 ` Paul Johnson
1997-10-14 0:00 ` Robert I. Eachus
1997-09-23 0:00 ` Jon S Anthony
1997-09-24 0:00 ` Richard A. O'Keefe
1997-09-24 0:00 ` Alan E & Carmel J Brain
1997-09-25 0:00 ` Anonymous
1997-09-30 0:00 ` Alan E & Carmel J Brain
1997-09-30 0:00 ` Matthew Heaney
1997-09-30 0:00 ` W. Wesley Groleau x4923
1997-09-30 0:00 ` Matthew Heaney
1997-10-01 0:00 ` Alan E & Carmel J Brain
1997-09-30 0:00 ` Neil Wilson
1997-09-30 0:00 ` Stephen Leake
1997-10-01 0:00 ` Anonymous
1997-10-01 0:00 ` Paul M Gover
1997-10-04 0:00 ` Paul Johnson
1997-10-04 0:00 ` Matthew Heaney
1997-10-15 0:00 ` Paul Johnson
1997-10-15 0:00 ` Matthew Heaney
1997-10-16 0:00 ` Joachim Durchholz
1997-10-17 0:00 ` Robert I. Eachus
1997-10-16 0:00 ` Joachim Durchholz
1997-10-22 0:00 ` Reimer Behrends
1997-10-01 0:00 ` Joachim Durchholz
1997-10-02 0:00 ` Robert A Duff
1997-10-02 0:00 ` Tucker Taft
1997-10-02 0:00 ` Matthew Heaney
1997-10-03 0:00 ` Stephen Leake
1997-10-04 0:00 ` Matthew Heaney
1997-10-07 0:00 ` Robert A Duff
[not found] ` <11861963wnr@eiffel.demon.co.uk>
1997-09-19 0:00 ` Mark L. Fussell
1997-09-19 0:00 ` Jon S Anthony
1997-09-23 0:00 ` Mark L. Fussell
1997-09-18 0:00 ` W. Wesley Groleau x4923
1997-09-21 0:00 ` Matthew Heaney
1997-09-09 0:00 Marc Wachowitz
1997-09-11 0:00 Robert Dewar
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox