Java Reference
In-Depth Information
The effect of an exception on the point in the program that called the problem method is a lit-
tle more complex. In particular, the full effect depends upon whether or not any code has been
written to catch the exception. Consider the following contrived call to getDetails :
AddressDetails details = contacts.getDetails(null);
// The following statement will not be reached.
String phone = details.getPhone();
We can say that, in all cases, the execution of these statements will be left incomplete; the
exception thrown by getDetails will interrupt the execution of the first statement, and no
assignment will be made to the details variable. As a result, the second statement will not be
executed either.
This neatly illustrates the power of exceptions to prevent a client from carrying on regardless of
the fact that a problem has arisen. What actually happens next depends upon whether or not the
exception is caught. If it isn't caught, then the program will simply terminate with an indication
that an uncaught IllegalArgumentException has been thrown. We shall discuss how to
catch an exception in Section 12.5.2.
Using unchecked exceptions
Unchecked exceptions are the easiest to use from a programmer's point of view, because the
compiler enforces few rules on their use. This is the meaning of “unchecked”: the compiler does
not apply special checks, either on the method in which an unchecked exception is thrown or on
the place from which the method is called. An exception class is unchecked if it is a subclass of
the RuntimeException class, defined in the java.lang package. All of the examples we have
used so far to illustrate exception throwing have involved unchecked exceptions. So there is little
further to add here about how to throw an unchecked exception—simply use a throw statement.
An unchecked
exception is a
type of exception
whose use will not
require checks from
the compiler.
If we also follow the convention that unchecked exceptions should be used in those situations
where we expect the result to be program termination—i.e., the exception is not going to be
caught—then there is also nothing further to be discussed about what the method's caller should
do, because it will do nothing and let the program fail. However, if there is a need to catch an
unchecked exception, then an exception handler can be written for it, exactly as for a checked
exception. How to do this is described in Section 12.5.2.
We have already seen use of the unchecked IllegalArgumentException . This is thrown by a
constructor or method to indicate that its parameter values are inappropriate. For instance, the get-
Details method might also choose to throw this if the key string passed to it is blank (Code 12.6).
Code 12.6
Checking for an illegal
parameter value
* Look up a name or phone number and return the
* corresponding contact details.
* @param key The name or number to be looked up.
* @throws IllegalArgumentException if the key is invalid.
* @return The details corresponding to the key,
* or null if there are none matching.
Search WWH ::

Custom Search