From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Java exception model. Was: Re: Ada Quality and Style book discussion ("_Type" suffix)
Date: Fri, 18 Nov 2005 14:18:43 +0100
Date: 2005-11-18T14:18:43+01:00 [thread overview]
Message-ID: <y29sgrogn8qm.1i463qwbkg5aa.dlg@40tude.net> (raw)
In-Reply-To: ycjff.2266$ZA3.459984@monger.newsread.com
On Fri, 18 Nov 2005 11:48:46 GMT, Peter C. Chapin wrote:
> Brian May wrote:
>
>> With respect to his complaint on exception handling - I like the Java
>> model where every exception that can be raised by a function has to be
>> declared - that way you don't have to check for exceptions that don't
>> currently occur - and if the specifications change, the compiler can
>> generate an error to let you know that you may not have considered an
>> exception.
>
> The problem with Java's model is that it forces the programmer to deal
> in some way with exceptions that semantically can't happen. Consider
>
> procedure Outer is
> begin
> if Some_Complicated_Check then
> Inner;
> end if;
> end Outer;
>
> Suppose procedure Inner raises an exception under certain conditions yet
> can't do so in the code above because Inner is only executed when the
> complicated check succeeds. Assume that under those particular
> conditions, it will never fail. The Java exception model would require
> us to either handle an exception that will never occur, or declare that
> Outer might raise an exception that we know it will never raise. Such a
> declaration will force Outer's callers to also do something about this
> impossible exception as well, etc, and so forth.
I can't tell for Java, but let consider Ada adopting a contract model of
exceptions. Your reasoning above is flawed. If the designer of Outer knows
that the exception X cannot propagate out of it then it should be:
procedure Outer is
begin
if Some_Complicated_Check then
begin
Inner;
exception
when X => -- This is not a state, it is a bug
raise Program_Error;
end if;
end if;
end Outer;
> The example above is simplistic and contrived but it's my belief that in
> real programs this sort of issue comes up a lot.
I think it is a software design issue. When exceptions and exceptional
states are considered as *valid* states, then there cannot be any good
argument against contract model of exceptions. They belong to a
*functional* part of the program. What is left, are the arguments like - it
is too difficult to implement; there would be too big overhead; I don't
know how to do it right - not much impressive. Alternatively you can say,
OK, exceptions are exclusively for software bugs. But this is also a quite
weak position, because if they are bugs, then why would you like to handle
them? Bugs to be debugged!
--
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de
next prev parent reply other threads:[~2005-11-18 13:18 UTC|newest]
Thread overview: 112+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-11-15 16:03 Request for comments on simple Ada program Maciej Sobczak
2005-11-15 17:43 ` Samuel Tardieu
2005-11-15 17:47 ` Samuel Tardieu
2005-11-15 21:28 ` Jacob Sparre Andersen
2005-11-15 21:53 ` Samuel Tardieu
2005-11-16 9:10 ` Anders Wirzenius
2005-11-15 21:55 ` Samuel Tardieu
2005-11-16 9:03 ` Niklas Holsti
2005-11-16 14:21 ` Jacob Sparre Andersen
2005-11-16 17:08 ` Niklas Holsti
2005-11-16 7:11 ` Brian May
2005-11-15 18:29 ` jimmaureenrogers
2005-11-15 19:33 ` tmoran
2005-11-16 14:46 ` jimmaureenrogers
2005-11-16 18:05 ` Martin Dowie
2005-11-16 19:54 ` tmoran
2005-11-15 18:52 ` Martin Krischik
2005-11-15 19:33 ` tmoran
2005-11-16 3:10 ` Ada Quality and Style book discussion Anonymous Coward
2005-11-16 4:09 ` tmoran
2005-11-16 5:49 ` Simon Wright
2005-11-16 7:03 ` Martin Dowie
2005-11-17 4:49 ` Anonymous Coward
2005-11-17 6:48 ` Martin Dowie
2005-11-17 11:45 ` Georg Bauhaus
2005-11-17 12:37 ` Stephen Leake
2005-11-17 13:24 ` Georg Bauhaus
2005-11-17 23:15 ` Stephen Leake
2005-11-19 20:28 ` Don't use the "use" clause Anonymous Coward
2005-11-19 20:35 ` Ed Falis
2005-11-21 17:36 ` David Emery
2005-11-21 19:20 ` Ed Falis
2005-11-21 22:21 ` David Trudgett
2005-11-21 22:51 ` Ed Falis
2005-11-22 0:15 ` Anonymous Coward
2005-11-23 4:09 ` Ed Falis
2005-11-23 19:26 ` tmoran
2005-11-19 21:48 ` Dmitry A. Kazakov
2005-11-19 22:33 ` Simon Wright
2005-11-19 23:40 ` Anonymous Coward
2005-11-20 11:07 ` Dmitry A. Kazakov
2005-11-20 19:50 ` Jeffrey R. Carter
2005-11-20 2:53 ` Stephen Leake
2005-11-20 3:57 ` Anonymous Coward
2005-11-20 10:44 ` Pascal Obry
2005-11-20 19:48 ` Jeffrey R. Carter
2005-11-22 5:11 ` greptree lou
2005-11-22 6:08 ` greptree Simon Wright
2005-11-25 1:00 ` greptree Björn Persson
2006-01-23 12:51 ` Don't use the "use" clause adaworks
2006-01-23 20:21 ` Jeffrey R. Carter
2006-01-24 2:27 ` Stephen Leake
2006-01-24 3:32 ` Ed Falis
2006-01-24 4:44 ` Jeffrey R. Carter
2006-01-24 22:53 ` Stephen Leake
2006-01-24 8:54 ` Dmitry A. Kazakov
2006-01-24 9:48 ` Martin Dowie
2006-01-24 10:28 ` Dmitry A. Kazakov
2006-01-24 13:30 ` brian.b.mcguinness
2006-01-24 20:03 ` Simon Wright
2006-01-24 23:00 ` Stephen Leake
2006-01-25 4:58 ` Jeffrey R. Carter
2006-01-24 23:38 ` Randy Brukardt
2006-01-25 14:49 ` Dmitry A. Kazakov
2006-01-25 21:46 ` Randy Brukardt
2006-01-26 9:14 ` Dmitry A. Kazakov
2006-01-27 1:04 ` Randy Brukardt
2006-01-27 15:23 ` Dmitry A. Kazakov
2006-01-27 16:35 ` Georg Bauhaus
2006-01-27 23:09 ` Randy Brukardt
2006-01-27 23:18 ` Randy Brukardt
2006-01-28 10:41 ` Dmitry A. Kazakov
2006-01-24 22:55 ` Stephen Leake
2006-01-24 9:42 ` Martin Dowie
2006-01-24 23:02 ` Stephen Leake
2006-01-25 9:14 ` Martin Dowie
2006-01-25 11:01 ` Peter Amey
2006-01-25 11:06 ` Martin Dowie
2006-01-25 20:07 ` Jeffrey R. Carter
2006-01-31 2:24 ` Stephen Leake
2006-02-09 5:13 ` Anonymous Coward
2005-11-17 20:55 ` Ada Quality and Style book discussion Simon Wright
2005-11-18 0:44 ` Larry Kilgallen
2005-11-19 20:56 ` Anonymous Coward
2005-11-19 22:41 ` Simon Wright
2005-11-20 0:03 ` Anonymous Coward
2005-11-17 4:23 ` Ada Quality and Style book discussion ("_Type" suffix) Anonymous Coward
2005-11-17 10:51 ` Martin Dowie
2005-11-19 21:52 ` Anonymous Coward
2005-11-20 15:50 ` Martin Dowie
2005-11-17 11:34 ` Georg Bauhaus
2005-11-17 11:53 ` Martin Dowie
2005-11-17 13:26 ` Georg Bauhaus
2005-11-17 12:26 ` Brian May
2005-11-17 13:45 ` Martin Dowie
2005-11-17 14:22 ` Marc A. Criley
2005-11-17 14:50 ` Martin Dowie
2005-11-18 3:04 ` Brian May
2005-11-18 9:23 ` Maciej Sobczak
2005-11-18 14:00 ` Marc A. Criley
2005-11-18 11:48 ` Java exception model. Was: " Peter C. Chapin
2005-11-18 13:18 ` Dmitry A. Kazakov [this message]
2005-11-19 18:06 ` Peter C. Chapin
2005-11-19 18:58 ` Dmitry A. Kazakov
2005-11-21 22:38 ` Brian May
2005-11-21 23:27 ` Brian May
2005-11-18 22:33 ` Simon Wright
2005-11-17 14:03 ` Hyman Rosen
2005-11-20 19:41 ` Jeffrey R. Carter
2005-11-20 20:43 ` Dmitry A. Kazakov
2005-11-21 0:00 ` Simon Wright
2005-11-16 13:51 ` Ada Quality and Style book discussion Marc A. Criley
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox