Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

ความแตกต่างระหว่าง Exception และ Error ใน Java

ทั้ง Exception และ Error เป็น subclass ของคลาส Throwable Error บ่งบอกถึงปัญหาที่เกิดขึ้นหลักจากขาดแคลนทรัพยากรระบบ (system resources) และแอปพลิเคชันของเราไม่ควรจับ (catch) ปัญหาเหล่านี้ ตัวอย่างเช่น system crash error และ out of memory error Error เกิดขึ้นส่วนใหญ่ในขณะรันไทม์ (runtime) จึงเป็นประเภท unchecked

Exception เป็นปัญหาที่อาจเกิดขึ้นทั้งในขณะคอมไพล์ (compile time) และรันไทม์ (runtime) เกิดจากโค้ดที่นักพัฒนาเขียน Exception แบ่งเป็นสองประเภทคือ checked exceptions และ unchecked exceptions

ตารางเปรียบเทียบรายละเอียด

ลำดับ หัวข้อ Error Exception
1 ประเภท จัดเป็น unchecked type จัดเป็น checked และ unchecked ทั้งคู่
2 แพ็กเกจ อยู่ใน java.lang.Error อยู่ใน java.lang.Exception
3 การกู้คืน (Recoverable) เป็น irrecoverable (กู้คืนไม่ได้) เป็น recoverable (กู้คืนได้)
4 เวลาเกิด ไม่เกิดในขณะคอมไพล์ เกิดได้ทั้งรันไทม์และคอมไพล์ไทม์
5 ตัวอย่าง OutOfMemoryError, IOError NullPointerException, SQLException

ตัวอย่าง Error

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.recursiveMethod(Main.java:42)

ตัวอย่าง Exception

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)

สรุป

Error เป็นปัญหาระดับระบบที่นักพัฒนาควรหลีกเลี่ยงการจับ (catch) ในขณะที่ Exception เป็นปัญหาระดับแอปพลิเคชันที่ควรจัดการด้วย try-catch หรือ throws เพื่อให้โปรแกรมทำงานต่อได้อย่างสมบูรณ์