comp.lang.ada
 help / color / mirror / Atom feed
From: Robert A Duff <bobduff@world.std.com>
Subject: Re: RISC
Date: Mon, 19 Mar 2001 15:42:19 GMT
Date: 2001-03-19T15:42:19+00:00	[thread overview]
Message-ID: <wcc66h53gv8.fsf@world.std.com> (raw)
In-Reply-To: vIYs6.6150$227.669029@newsread2.prod.itd.earthlink.net

Charles Hixson <charleshixsn@earthlink.net> writes:

> Robert A Duff wrote:
> 
> > "Marin David Condic" <marin.condic.auntie.spam@pacemicro.com> writes:
> > 
> >> Its hard to come up with absolute rules since it often requires
> >> subjective, artistic judgements. Just keep in mind that the intention is
> >> to have a mechanism that deals with *errors* - not anticipated conditions
> >> that can be accommodated with some sort of "normal" processing.
> > 
> >....
> > Another way to look at it is that the point of exceptions is to separate
> > the code that *detects* errors from the code that *handles* those
> > situations.  If the code that detects something knows what to do about
> > it, then exceptions aren't necessary -- that code can just have an 'if'
> > statement that checks the condition, and handles the situation in the
> > 'then' part.
> > 
> > - Bob
> 
> Is the problem that exceptions are expensive, or that exceptions violate 
> localization?  Or something else?

I'm not sure which problem you're referring to.  I was just trying to
explain the point of exceptions (ie, why do we have exceptions instead
of just if statements and whatnot).  I wasn't trying to point out any
problem.

> E.g.:  Should EOF detection be done with an exception?  It's usuaual, but 
> expected.  I think of encountering an EOF and an unusual condition, and 
> it's nice to be able to automatically check for it whenever a read happens 
> without explicitly calling on an eof() function.

I prefer the function in the EOF case.

> Java rather expects that procedures will throw exceptions.  I don't know 
> C++ well enough to comment.  Python seems to believe that exceptions are 
> quite reasonable.  Eiffel thinks that exceptions should be handled within 
> the same routine that defines them. Etc.  I think that this is a language 
> specific issue.

True.  But as a language designer by nature, I tend to think about "how
should I design an exception facility", rather than just, "how should
exceptions be used in this particular language", given the biases of
the language designer.

> My impression was that Ada exceptions were intended to handle unusual cases 
> (exceptional cases).  That they were slightly more expensive to raise than 
> a local branch would be, but that they were slightly cheaper if no 
> exceptional case was detected.

Sort of true, except for the "slightly" part.  In a good Ada
implementation, it is enormously more expensive to raise an exception
than to do an if_statement or whatever.  Perhaps 1,000 times more
expensive (just a wild guess).  If the exceptional case is *not*
detected, you still have to execute the compare instruction (or
whatever) that would have detected it, so I see no difference there
(unless you're talking about something like overflow, which can be
detected by the hardware "for free" on some machines).

This efficiency trade-off is because of the intended use of exceptions,
not the other way around.

>...  And that they should be handled as close to 
> the routine that raised them as possible.  Preferably within the routine.  

I don't agree.  If it's handled in the routine itself, why raise and
handle an exception?  Why not just write:

    if X.Length < 1 then 
        Do_Something_About_It;

Exceptions are for the case where the "if X.Length < 1 then" is in a
different procedure than the "Do_Something_About_It;", because the
procedure that detects the error doesn't *know* what to do about it.
I'm not talking about efficiency here -- it would be possible to
implement very-local handlers as efficiently as an if statement /
conditional jump.  But nobody does that, because it's not the way
exceptions should be used.

The "as close to" part of what you wrote is often true.  But there are
certainly cases of handling exceptions very far away: the main program
might handle "others", and then crash gracefully -- it has no idea where
the exception came from.

- Bob



  reply	other threads:[~2001-03-19 15:42 UTC|newest]

Thread overview: 82+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-03-14 20:23 RISC chris.danx
2001-03-14 21:57 ` RISC Tucker Taft
2001-03-14 22:36   ` RISC chris.danx
2001-03-14 23:03     ` RISC Fraser Wilson
2001-03-15  1:30       ` RISC Corey Ashford
2001-03-15  9:19       ` RISC chris.danx
2001-03-15 12:37 ` RISC chris.danx
2001-03-15 13:03   ` RISC Tarjei T. Jensen
2001-03-15 18:29     ` RISC Robert A Duff
2001-03-15 14:40   ` RISC Ted Dennison
2001-03-15 14:49     ` RISC Robert A Duff
2001-03-15 17:37       ` RISC Marin David Condic
2001-03-15 18:28         ` RISC Robert A Duff
2001-03-15 19:16           ` RISC Marin David Condic
2001-03-16  8:44             ` RISC Martin Dowie
2001-03-16 14:40               ` RISC Marin David Condic
2001-03-20 10:17                 ` RISC Martin Dowie
2001-03-20 14:34                   ` RISC Marin David Condic
2001-03-20 15:45                     ` RISC Ted Dennison
2001-03-20 16:39                       ` RISC Robert A Duff
2001-03-20 18:10                       ` RISC Martin Dowie
2001-03-20 18:56                         ` RISC Ted Dennison
2001-03-22  9:16                       ` RISC - largish (code listed) Martin Dowie
2001-03-22  9:34                         ` Martin Dowie
2001-03-20 18:09                     ` RISC Martin Dowie
2001-03-20 20:00                       ` RISC Marin David Condic
2001-03-20 22:30                         ` RISC Robert A Duff
2001-03-20 22:48                           ` RISC Ted Dennison
2001-03-20 23:10                           ` RISC Marin David Condic
2001-03-21  0:18                             ` RISC Robert A Duff
2001-03-21 14:31                               ` RISC Marin David Condic
2001-03-21 16:47                                 ` RISC Ted Dennison
2001-03-21 17:36                                   ` RISC Marin David Condic
2001-03-16 15:09             ` RISC Tucker Taft
2001-03-16 17:10               ` RISC Robert A Duff
2001-03-16 19:02                 ` RISC Marin David Condic
2001-03-16 20:58                   ` RISC Robert A Duff
2001-03-19 16:17                     ` RISC Marin David Condic
2001-03-19 16:45                       ` RISC Florian Weimer
2001-03-19 17:14                         ` RISC Marin David Condic
2001-03-19 17:33                           ` RISC Florian Weimer
2001-03-21  5:57                           ` RISC Lao Xiao Hai
2001-03-16 22:19                   ` RISC Ted Dennison
2001-03-16 19:13                 ` RISC Laurent Guerby
2001-03-16 20:30                   ` RISC Robert A Duff
2001-03-16 20:51                 ` RISC Ole-Hjalmar Kristensen
2001-03-16 18:33               ` RISC Marin David Condic
2001-03-16 20:45                 ` RISC Robert A Duff
2001-03-17  1:13                   ` RISC Randy Brukardt
2001-03-19 16:34                   ` RISC Marin David Condic
2001-03-19 17:49                     ` RISC Robert A Duff
2001-03-16 20:08 ` RISC chris.danx
2001-03-16 20:31   ` RISC Marin David Condic
2001-03-17 21:51     ` RISC Robert A Duff
2001-03-18  6:37       ` RISC Charles Hixson
2001-03-19 15:42         ` Robert A Duff [this message]
2001-03-19 17:02         ` RISC Marin David Condic
2001-03-19 17:45           ` RISC Robert A Duff
2001-03-19 18:48             ` RISC Marin David Condic
2001-03-19 16:45       ` RISC Marin David Condic
2001-03-16 22:27 ` RISC chris.danx
2001-03-17  2:49   ` RISC Jeffrey Carter
2001-03-19  9:43   ` RISC Martin Dowie
2001-03-19 11:06     ` RISC chris.danx
2001-03-28 22:24     ` RISC chris.danx
2001-03-29  0:52       ` RISC Corey Ashford
2001-03-29 12:42       ` RISC John English
2001-03-22 20:11 ` RISC chris.danx
2001-03-22 20:51   ` RISC Marin David Condic
2001-03-22 21:02   ` RISC tmoran
2001-03-22 21:18     ` RISC chris.danx
2001-03-22 21:45   ` RISC Britt Snodgrass
2001-03-22 22:43     ` RISC chris.danx
2001-03-28 11:37   ` RISC chris.danx
  -- strict thread matches above, loose matches on Subject: below --
2001-03-16 23:25 RISC Beard, Frank
2001-03-17 11:39 ` RISC chris.danx
2001-03-29  3:12 RISC Beard, Frank
2001-03-29  7:28 ` RISC Martin Dowie
2001-03-29 12:38 ` RISC chris.danx
2001-03-29 19:07 ` RISC Chad R. Meiners
2001-03-29 17:52 RISC Beard, Frank
2001-03-30 17:31 RISC Kent Paul Dolan
replies disabled

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