ข้อยกเว้นและข้อผิดพลาดทั้งสองเป็นคลาสย่อยของคลาส 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)