Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Khác biệt giữa Exception và Error trong Java

Cả Exception và Error đều là subclass của Throwable. Hiểu rõ sự khác biệt giúp xử lý lỗi hiệu quả hơn.

Bảng so sánh chi tiết

STT Tiêu chí Error Exception
1 Phân loại Unchecked type (unchecked exception) Cả Checked và Unchecked
2 Package java.lang.Error java.lang.Exception
3 Khả năng phục hồi Không thể phục hồi (irrecoverable) Có thể phục hồi (recoverable)
4 Thời điểm xảy ra Chỉ xảy ra tại runtime Cả compile-time và runtime
5 Ví dụ điển hình OutOfMemoryError, StackOverflowError, IOError NullPointerException, SQLException, IOException, ArithmeticException

Ví dụ Error: StackOverflowError

public class ErrorExample {
    public static void main(String[] args) {
        recursiveMethod(10);
    }
    
    public static void recursiveMethod(int i) {
        while (i != 0) {
            i = i + 1; // Vô tận, không bao giờ bằng 0
            recursiveMethod(i);
        }
    }
}

Output: Exception in thread "main" java.lang.StackOverflowError

Ví dụ Exception: ArithmeticException

public class ExceptionExample {
    public static void main(String[] args) {
        int x = 100;
        int y = 0;
        int z = x / y; // Chia cho 0
    }
}

Output: java.lang.ArithmeticException: / by zero

Phân loại Exception

  • Checked Exception: Compiler bắt buộc xử lý (try-catch hoặc throws): IOException, SQLException.
  • Unchecked Exception (RuntimeException): Không bắt buộc xử lý: NullPointerException, ArrayIndexOutOfBoundsException.

Best Practice

Không bao giờ catch Error (trừ khi logging trước khi crash). Error chỉ ra vấn đề nghiêm trọng của JVM/hệ thống mà ứng dụng không thể khắc phục. Chỉ catch và xử lý Exception.