100 CHAPTER 3.
CONTROL
to replace the case label case 2 with default. The computer can see that a value is assigned
to computerMove in all cases.
More generally, we say that a value has been definitely assigned to a variable at a given
point in a program if every execution path leading from the declaration of the variable to that
point in the code includes an assignment to the variable. This rule takes into account loops
and if statements as well as switch statements. For example, the following two if statements
both do the same thing as the switch statement given above, but only the one on the right
definitely assigns a value to computerMove:
String computerMove; String computerMove;
int rand; int rand;
rand = (int)(3*Math.random()); rand = (int)(3*Math.random());
if ( rand == 0 ) if ( rand == 0 )
computerMove = "Rock"; computerMove = "Rock";
else if ( rand == 1 ) else if ( rand == 1 )
computerMove = "Scissors"; computerMove = "Scissors";
else if ( rand == 2 ) else
computerMove = "Paper"; computerMove = "Paper";
In the code on the left, the test “if ( rand == 2 )” in the final else clause is unnecessary
because if rand is not 0 or 1, the only remaining possibility is that rand == 2. The computer,
however, can’t figure that out.
3.7 Introduction to Exceptions and try..catch
In addition to the control structures that determine the normal flow of control in a pro-
gram, Java has a way to deal with “exceptional” cases that throw the flow of control off its
normal track. When an error occurs during the execution of a program, the default behavior
is to terminate the program and to print an error message. However, Java makes it possible to
“catch” such errors and program a response different from simply letting the program crash.
This is done with the try..catch statement. In this section, we will take a preliminary, incom-
plete look at using try..catch to handle errors. Error handling is a complex topic, which we
will return to in Chapter 8.
3.7.1 Exceptions
The term exception is used to refer to the type of error that one might want to handle with
a try..catch. An exception is an exception to the normal flow of control in the program.
The term is used in preference to “error” because in some cases, an exception might not be
considered to be an error at all. You can sometimes think of an exception as just another way
to organize a program.
Exceptions in Java are represented as objects of type Exception. Actual exceptions are de-
fined by subclasses of Exception. Different subclasses represent different types of exceptions We
will look at only two types of exception in this section: NumberFormatException and IllegalArgu-
mentException.
A NumberFormatException can occur when an attempt is made to convert a string
into a number. Such conversions are done by the functions Integer.parseInt
and Integer.parseDouble. (See Subsection 2.5.7.) Consider the function call
Integer.parseInt(str) where str is a variable of type String. If the value of str is the
string "42", then the function call will correctly convert the string into the int 42. However,