Câu hỏi phỏng vấn Java
Câu hỏi

Sự khác biệt giữa ClassNotFoundExceptionNoClassDefFoundError trong Java là gì?

Câu trả lời

Trong Java, ClassNotFoundExceptionNoClassDefFoundError đều liên quan đến các vấn đề không tìm thấy lớp, nhưng chúng được ném ra trong các tình huống khác nhau và có nguyên nhân khác nhau:

ClassNotFoundException

  • ClassNotFoundException là một ngoại lệ được kiểm tra (checked exception) mà được ném ra khi một ứng dụng cố gắng tải một lớp thông qua tên của nó sử dụng một số phương thức như Class.forName(), ClassLoader.loadClass() hoặc ClassLoader.findSystemClass(), nhưng không thể tìm thấy lớp đó trong classpath.
  • Ngoại lệ này thường xảy ra trong các tình huống liên quan đến việc tải động lớp, chẳng hạn như trong các ứng dụng sử dụng JDBC để kết nối với cơ sở dữ liệu mà không có driver JDBC thích hợp trong classpath.
  • ClassNotFoundException cần phải được xử lý (catch) hoặc khai báo ném ra (throws) trong mã nguồn.

NoClassDefFoundError

  • NoClassDefFoundError là một lỗi (Error) không được kiểm tra (unchecked) mà xảy ra khi JVM hoặc ClassLoader cố gắng tải một lớp nhưng không tìm thấy định nghĩa của lớp đó trong classpath tại thời điểm chạy (...
middle

middle

Gợi ý câu hỏi phỏng vấn

senior

Thread-safe với Singleton trong Java là gì?

senior

Trong Java, làm sao để bạn đảm bảo N thread có thể truy cập N tài nguyên mà không bị deadlock?

middle

Java Classloader là gì?

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào