Exceptions
Java has its roots in embedded systems—software that runs inside specialized devices, such as handheld computers, cellular phones, and fancy toasters. In those kinds of applications, it’s especially important that software errors be handled robustly. Most users would agree that it’s unacceptable for their phone to simply crash or for their toast (and perhaps their house) to burn because their software failed. Given that we can’t eliminate the possibility of software errors, it’s a step in the right direction to recognize and deal with anticipated application-level errors methodically.
Dealing with errors in some languages is entirely the responsibility
of the programmer. The language itself provides no help in identifying
error types and no tools for dealing with them easily. In the C language,
a routine generally indicates a failure by returning an “unreasonable”
value (e.g., the idiomatic -1 or
null). As the programmer, you must know
what constitutes a bad result and what it means. It’s often awkward to
work around the limitations of passing error values in the normal path of
data flow.[9] An even worse problem is that certain types of errors can
legitimately occur almost anywhere, and it’s prohibitive and unreasonable
to explicitly test for them at every point in the software.
Java offers an elegant solution to these problems through exceptions. (Java exception handling is similar to, but not quite the same as, exception handling in C++.) An exception indicates an unusual ...