ข้อยกเว้นและข้อผิดพลาดทั้งสองเป็นคลาสย่อยของคลาส Throwable ข้อผิดพลาดบ่งชี้ถึงปัญหาที่เกิดขึ้นเนื่องจากขาดทรัพยากรระบบเป็นหลัก และแอปพลิเคชันของเราไม่ควรตรวจพบปัญหาประเภทนี้ ตัวอย่างข้อผิดพลาดบางส่วน ได้แก่ ข้อผิดพลาดของระบบขัดข้องและข้อผิดพลาดหน่วยความจำไม่เพียงพอ ข้อผิดพลาดส่วนใหญ่เกิดขึ้นขณะรันไทม์ซึ่งเป็นของประเภทที่ไม่ได้ตรวจสอบ
ข้อยกเว้นคือปัญหาที่อาจเกิดขึ้นที่รันไทม์และเวลาในการคอมไพล์ ส่วนใหญ่เกิดขึ้นในโค้ดที่เขียนโดยนักพัฒนา ข้อยกเว้นแบ่งออกเป็นสองประเภทเช่นข้อยกเว้นที่ตรวจสอบและข้อยกเว้นที่ไม่ได้ตรวจสอบ
| ซีเนียร์ เลขที่ | คีย์ | ข้อผิดพลาด | ข้อยกเว้น |
|---|---|---|---|
| 1 | Type | จัดเป็นประเภทที่ไม่ได้เลือก | จัดว่าตรวจสอบแล้วและไม่ได้เลือก |
| 2 | Package | มันเป็นของ java.lang.error | มันเป็นของ java.lang.Exception |
| 3 | กู้คืนได้/ไม่สามารถกู้คืนได้ | กู้คืนไม่ได้ | คืนได้ |
| 4 | ไม่สามารถเกิดขึ้นได้ในเวลาคอมไพล์ | มันสามารถเกิดขึ้นได้ในขณะรันไทม์คอมไพล์ไทม์ทั้งสองอย่าง | |
| 5 | ตัวอย่าง | OutOfMemoryError ,IOError | NullPointerException , SqlException |
ตัวอย่างข้อผิดพลาด
public class ErrorExample {
public static void main(String[] args){
recursiveMethod(10)
}
public static void recursiveMethod(int i){
while(i!=0){
i=i+1;
recursiveMethod(i);
}
}
} ผลลัพธ์
Exception in thread "main" java.lang.StackOverflowError at ErrorExample.ErrorExample(Main.java:42)
ตัวอย่างข้อยกเว้น
public class ExceptionExample {
public static void main(String[] args){
int x = 100;
int y = 0;
int z = x / y;
}
} ผลลัพธ์
java.lang.ArithmeticException: / by zero at ExceptionExample.main(ExceptionExample.java:7)