1 exception handling starring: arrayindexoutofbounds co-starring: ariane rocket ioexception...
TRANSCRIPT
1
Exception Handling
Starring: ArrayIndexOutOfBOunds
Co-Starring: Ariane Rocket
IOException
RunTImeException
2
Purpose:
In this lecture series we will learn about Exception Handling.
Our programs need to be able to handle run time problems that may arise due to logic or other flaws in our programs. We need to be able to recognize the common exception errors as well as throw our own exceptions to be able to handle unexpected run time problems.
3
Resources:
Java Essentials Chapter 14 p.557
Java Essentials Study Guide Chapter 12 p.195
Lambert Comprehensive Appendix F
Big Java Chapter 14 p. 557
Deitel & Deitel “Java How to Program” Chapter 14 p.698
4
Resources:
Barrons:
Page 15-16Pages 41, 79, 170, 180, 250, 252, 255,
375
5
Intro:Exception handling is necessary as
many Java methods require you to deal with the possibility that the method will not work as specified.
We will discuss:
The AP AB Requirements
Errors vs Exceptions
Checked Exceptions
UnChecked Exceptions
Throwing our own Exceptions
6
AP AB Subset Requirements:
Students are expected to understand the exceptions that occur when their programs contain errors , in particular:
NullPointerException ArrayIndexOutOfBoundsException
ArithmeticException ClassCastException
7
Students are expected to be able to throw the unchecked IllegalStateException and NoSuchElementException in their own methods (principally when implementing collection ADTs).
8
Checked exceptions are not in the subset. In particular, the try/catch/finally statements is not in the subset.
NOTE: Checked Exceptions & Try/Catch/Finally are NOT IN THE AP Subset
9
Errors vs Exceptions
Errors are serious Run Time problems that usually are NOT practical to handle in a program
For example, an infinite loop results in Java throwing a StackOverflowError
Java defines a separate class for each kind of error in java.lang.Error
10
Exceptions are divided into two categories:
Exceptions that Java REQUIRES the programmer to handle
IOException is one that MUST be handled
11
Exceptions that the programmer has the option of handling
ArithmeticException
ArrayIndexOutOfBoundsException
12
Examples of handling exceptions:
// catch division by zero
try
{
quotient = dividend / divisor;
System.out.println(“Successful division”);
}
catch (ArithmeticException e)
{
System.out.println(“ErrorA: “ + e.toString);
}
13
// catch to catch an index out of range
try
{
a[x] = 0;;
System.out.println(“Successful Supscripting”);
}
catch (ArrayIndexOutOfBoundsException e)
{
System.out.println(“ErrorB: “ + e.toString);
}
14
When Java detects and throws an exception, control is immediately transferred from the problem instruction in the try block to the catch statement.
Therefore, if no exception occurs then the remaining code in the try executes completely and the catch code never executes
15
You can have these combined:// catch division by zerotry{
quotient = dividend / divisor;System.out.println(“Successful division”); a[x] = 0;;System.out.println(“Successful Supscripting”);
}catch (ArithmeticException e){
System.out.println(“ErrorA: “ + e.toString);}catch (ArrayIndexOutOfBoundsException e){
System.out.println(“ErrorB: “ + e.toString);}
16
Checked Exceptions:
These are due to external circumstances that the programmer can not prevent
Therefore the compiler will make sure your program handles these exceptions (compiler forced)
17
When you call a method that throws a checked exception, you MUST tell the system what to do if the exception is thrown
All children of IOException are checked exceptions and these are the most common types of Checked exceptions
18
Look at our File I/O processing:
// instiantate a buffer to hold a chunk of the fileBufferedReader br = new BufferedReader(reader);
// read in 1 line of the file into the buffertry
{linein = br.readLine();
} catch (IOException e)
{linein = new String("-- An error has occurred
--");}
19
We were forced to handle possible IO exceptions when we read from the buffered reader
This is an example of a checked exception
These exceptions describe a problem that is likely to occur at times regardless of how careful you are
20
Checked errors ---- you must handle in your code methods that throw exception errors
TRY CATCH
try
{
// IO stuff
} catch (IOException e)
{
// do some S.O.P error msg // (use e)
} A Checked exception will occur only in the
context of a specific activity
21
Students do not need to write their own checked exceptions but they need to be able to read and understand them when they occur in existing programs
22
Unchecked Exceptions:
RunTime Exceptions can occur almost anywhere
These kind of errors are the programmers fault !!!
Unchecked exceptions halt the program
23
While a file I/O error can occur for reasons out of your control, you are responsible for a NullPointerException because your code was badly designed in trying to access a NULL reference
Java’s compiler does not force you to handle these unchecked exceptions
24
NullPointerException and IllegalArgumentException are examples of unchecked exceptions
All exceptions that extend the class java.lang.RuntimeException class are Unchecked exceptions
Here is the list of unchecked exceptions you are responsible for:
25
NullPointerException --- attempt to access a Null Object
IllegalArgumentException --- An argument supplied is not legal for that method
ArrayIndexOutOfBoundsException --- Attempt to access an index element that is not in the Array’s range
26
ClassCastException --- Occurs when an attempt is made to cast a variable to a class that it does not match
ArithmeticException --- division by ZERO for integers
IndexOutOfBoundsException --- thrown when an index is out of range (parent of
ArrayIndex and StringIndex)
27
StringIndexOutOfBoundsException --- Thrown when an index is out of the range of the String’s size
NumberFormatException --- Thrown when an attempt to convert a String to one of the numeric types is made when the String does not have the appropriate format (child of IllegalArgument)
28
Students need to be able to throw the Unchecked exceptions:
IllegalStateException --- Signals that a method has been invoked at an illegal or inappropriate time
29
NoSuchElementException --- Thrown when an attempt to access a nonexistent element is made. Thrown by the nextElement method of an Enumeration to indicate that there are no more elements in the enumeration
30
In these Examples of Exceptions, what type of exception would occur ?
int num = 21;
int count = 0;
System.out.println(num / count);
31
In these Examples of Exceptions, what type of exception would occur ?
int num = 21;
int count = 0;
System.out.println(num / count);
ANS: ArithmeticException
32
(Manager is a subclass of an Employee class)
Employee worker1 = new Employee( );
System.out.println((Manager)worker1);
33
(Manager is a subclass of an Employee class)
Employee worker1 = new Employee( );
System.out.println((Manager)worker1);
ANS: ClassCastException as worker1 is an Employee NOT a Manager
34
int[ ] anArray = new int[10];
anArray[11] = o;
35
int[ ] anArray = new int[10];
anArray[11] = o;
ANS:ArrayIndexOutOfBoundsException
36
String s = “string”;
System.out.println(s.substring(0,8));
37
String s = “string”;
System.out.println(s.substring(0,8));
ANS:StringIndexOutOfBOundsException
38
(I know we have not discussed Iterator yet, but try and reason this one out)
ArrayList friends = new ArrayList( );
Iterator it2;
for (it2 = friends.iterator( ); it2.hasNext( ) ; )
{
String temp2 = (String)it2.next( );
System.out.println(temp2);
}
System.out.println(it2.next( ) );
39
(I know we have not discussed Iterator yet, but try and reason this one out)
ArrayList friends = new ArrayList( );Iterator it2;for (it2 = friends.iterator( ); it2.hasNext( ) ; )
{String temp2 = (String)it2.next( );System.out.println(temp2);
}System.out.println(it2.next( ) );
ANS:NoSuchElementException on the last output
40
The for loop iterator traverses the entire array so the final output asks for the next element in the ArrayList that does not exist
41
Manager worker1 = null;
String temp = worker1.getName( );
42
Manager worler1 = null;
String temp = worker1.getName( );
ANS: NullPointerException;
43
int units = Integer.parseInt(“1234a”);
System.out.println(units + 1);
44
int units = Integer.parseInt(“1234a”);
System.out.println(units + 1);
ANS: NumberFormatException
as “1234a” is not a valid number
45
Throwing Exceptions:
Throwing exceptions can ensure that certain conditions exist when your programs are executed
Frequently, especially in the AP exam, PRECONDITIONS are set for any caller of a method to meet
46
However, we can ensure proper data by checking ourselves
When you detect an error, you may throw an appropriate exception
The throw statement is used to invoke the exception handling mechanism
To throw an exception, you need to create an instance of an Exception Object with the new operator and then throw it
47
if (withDrawAmount > balance)
{
IllegalArgumentException exception = new
IllegalArgumentException(“Amount exceeds Balance”);
throw exception;
}
else
balance -= wothDrawAmount;
48
You can simplify the exception creation:
throw new IllegalArgumentException(“Amount exceeds Balance”);
At that point the current flow of your code is interrupted and control passes to the exception handler
49
Students must be able to THROW exceptions:
if (radius < 0)
throw new IllegalArgumentException (“bad radius value”);
else
I = Math.Pi * r * r;
50
Unchecked errors do not require try / catch
The exceptions students will be required to throw are:
IllegalArgumentException IllegalStateException NoSuchElementException
51
Examples:public void race(double raceLength){
if (raceLength < = 0){ throw new IllegalArgumentException(“Race length must be greater than zero”);}numberOfRaces++;milesRaced += raceLength;
}
52
public BankAccount (double initialBalance)
{
if (initialBalance < 0)
{
throw new IllegalStateException(“Initial balance must be non-negative”);
}
balance = initialBalance;
}
53
The NoSuchElementException will be discussed when we learn about Linked Lists
However, this error will result when a Linked List attempts to remove the first element from an empty List
Lets look at the Java Doc for java.util.LinkedList and examine the removeFirst method
54
LinkedList myLL = new LinkedList;
myLL.remove( );
will result in a
NoSuchElementException
55
What is critical for the AP Exam:
Know the Conditions under which the common (listed in the previous section) exceptions are thrown
56
What is critical for the AP Exam:
Be able to throw the IllegalStateException and the NoSuchElementException in your own projects
57
What is critical for the AP Exam:
Students should understand these unchecked exceptions:
NullPointerException ArrayIndexOutOfBOundsException ArithmeticException (divide by
zero) ClassCastException IllegalArgumentException
IOException is also helpful to know
58
Java Docs:
Open up Java Docs and look at the exceptions the ArrayList, for example, throws
59
Ariane Rocket Incident:
Discuss this ESA Story from Java Essentials Chapter 14 pp.576-577
60
Projects:
Various Multiple Choice and Free Response Questions
All Barrons M/C and Free Response Questions on Exception Handling
From this point forward, all potential unchecked exceptions MUST be handled
61
NO Specific Test for This Section !!!