Java Reference
In-Depth Information
public class C {
public static void main(String[] args)
throws Exception
{ first(); }
public static void first() throws Exception
{ throw new Exception(); }
}
The Java runtime system now has the responsibility of catching Exception s,
since it calls main , and it will catch them.
Checked and unchecked objects
Checking that thrown objects are caught is a good idea, for it forces the pro-
grammer to think carefully about how thrown objects should be handled. But the
Java compiler does not check all thrown objects in this manner. All exceptions
are called checked exceptions except these unchecked exceptions :
• Thrown objects of class Error and its subclasses.
• Thrown objects of class RuntimeException and its subclasses.
If Java forced us to put a throws-clause in the header for all possibly-thrown
objects, each method would have a long throws-clause on it, and everything
would become unwieldy. Therefore, the usual types of exceptions that might
occur —like subscript out of range, and division by 0 — are made subclasses of
RuntimeException , so they are not checked. Those that are important to check,
like input-output exceptions (instance of class IOException ) are not subclasses
of RuntimeException and therefore must be checked.
A mode of operation for handling checked exceptions
It is difficult to remember which exceptions are checked and which are not,
and it is often a pain to have to go look it up. Therefore, we usually work as fol-
lows. We program without regard to which exceptions are checked or not. Then,
when we compile and find the program is syntactically illegal because a certain
exception is not caught, we investigate and figure out what to do for that partic-
ular case. Usually, this will mean simply putting a throws-clause on one or more
methods.
10.6
Hints on using exceptions
We make a few remarks on using exceptions.
Lesson
page 10-6
1. Do not overuse exceptions.
Do not use exception handling to replace simple tests. Exception handling
takes more time than an equivalent simple test, but that is not the real reason for
not using exception handling. The ability to throw an exception in a method is
Search WWH ::




Custom Search