On 9/25/12 7:29 AM, bob wrote:
> What is the etiology of exceptions? Did they come about because people got tired of having to check a return value every time they called a function?
>
I don't know of how they came to be, but I can list several benefits.
1. The Error Condition and the Error Handler which-could-handle-it were
often separated by several levels of calls.
2. Having a "magic" return value isn't always possible, or desirable, so
some other mechanism needed to be employed. Passing an argument by
reference has additional overhead for a hopefully rare case.
3. In some languages, Exceptions can be compile-time checked, which
helps reduce the number of bugs. The compiler can even use its typing
system to ensure that the *correct* exceptions are handled, further
reducing human error.
4. Exceptions also allow easy polymorphism of error cases. Because of
this, they are useful in more OO design patterns over simple return values.
5. In complicated programs, it is easier to visualize flow of execution
with fewer "if" statements. Using exceptions allows easier
understanding of the "normal" flow vs "exceptional" flow. It also helps
to understand what code is actually responsible for handling error
conditions (since its concentrated in the catch blocks).
This is all just off the top of my head, and some of it may be arguable,
but IMHO the argument that you can just check return values is flawed.
You *can* just check return values, just as you *can* turn off a
light-bulb by unscrewing it. There just is a better way.