ชนิดข้อมูลและการจัดการข้อยกเว้นใน 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 type> <variable name>) {
// 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 หลายบล็อกเพื่อจัดการ exception ต่างประเภทกันcatch มี exception type และตัวแปร exception เป็นของตัวเองcatch block ตามลำดับจนกว่าจะพบที่ตรงกันtry {
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){ } เพื่อดักจับทุก exceptiontry {
// 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 จะทำงานเสมอ// 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 ที่ส่งเข้า catch block มีข้อมูลมากมาย.getMessage() เพื่อดูสาเหตุในรูปแบบที่อ่านได้.getClass() เพื่อดูชื่อคลาสหรือประเภทของ Exception.printStackTrace() เพื่อแสดง stack trace (สไลด์ถัดไป)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)
ชนิดข้อมูลและการจัดการข้อยกเว้นใน Java