Data Types and Exceptions in Java
Jim White
Java Developer
public static void main(String[] args) {
ArrayList<String> allStars = new ArrayList<String>();
allStars.add("Mays");
allStars.add("Aaron");
allStars.add("Ruth");
String last = allStars.get(3); // This will cause an exception
System.out.println(last);
}
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index 3 out of
bounds for length 3
try {
// Statements to be executed and watched for exceptions
}
try {
// Statements to be executed and watched for exceptions
} catch (Exception variable) {
// Statements to execute if an exception has occurred
}
try {
ArrayList<String> allStars = new ArrayList<String>();
allStars.add("Mays");
allStars.add("Aaron");
allStars.add("Ruth");
String last = allStars.get(3); // Accessing an element that isn't there
System.out.println(last);
} catch (IndexOutOfBoundsException e) {
System.out.println("Oops - wrong index");
}
Oops - wrong index
catch
blocks to handle different types of exceptionscatch
gets its own exception type and exception variablecatch
blocks in order until it finds a matchtry {
ArrayList<String> nums
= new ArrayList<String>();
nums.add("one");
String last = nums.get(0);
Integer.valueOf(last);
System.out.println(last);
} catch (IndexOutOfBoundsException eIndex) {
System.out.println("Oops - wrong index");
} catch (NumberFormatException eValueOf) {
System.out.println(
"Oops - String not a number");
}
Oops - String not a number
catch (Exception variable){ }
as a catch alltry {
// Code to try
} catch (IndexOutOfBoundsException eIndex) {
System.out.println("Oops - wrong index");
} catch (NumberFormatException eValueOf) {
System.out.println("Oops - String not a number");
} catch (Exception e) { // Handles all exceptions except the two above
System.out.println("Something unplanned happened");
}
finally
block always executes// When exception happens
try {
Integer.valueOf("one");
} catch (NumberFormatException eValueOf) {
System.out.println("Oops");
} finally {
System.out.println("Doing cleanup");
}
Oops
Doing cleanup
// When no exception gets thrown
try {
Integer.valueOf("1");
} catch (NumberFormatException eValueOf) {
System.out.println("Oops");
} finally {
System.out.println("Doing cleanup");
}
Doing cleanup
Exception
object passed into the catch block is rich with information.getMessage()
to get the human readable cause.getClass()
to get the Exception class or type name .printStackTrace()
to display the stack trace (next slide)public class ExceptionExample {
public static void main(String[] args) {
try {
Integer.valueOf("one");
} catch (NumberFormatException e) {
System.out.println(e.getMessage());
e.printStackTrace();
}
}
}
For input string: "one"
java.lang.NumberFormatException: For input string: "one"
at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:67)
at java.base/java.lang.Integer.parseInt(Integer.java:661)
at java.base/java.lang.Integer.valueOf(Integer.java:988)
at foo/exceptions.ExceptionExample.main(ExceptionExample.java:7)
Data Types and Exceptions in Java