Trong quá trình học tập, nghiên cứu hay trong những bài phỏng vấn về ngôn ngữ Java. Việc xử lý Exception là một vấn đề vô cùng quan trọng, nó giúp chúng ta có thể hoàn thiện, tối ưu một chương trình Java. Theo dõi bài viết của chúng tôi để hiểu rõ hơn Exception là gì bạn nhé!
Nội dung
Exception là gì?
Trong từ điển, ý nghĩa của Exception chính là tình trạng bất thường.
Đối với lập trình Java, Exception là một sự kiện mà phá vỡ luống chuẩn của chương trình. Nó là một đối tượng được ném tại Runtime. Một ngoại lệ trong Java là một vấn đề được xảy ra trong quá trình thực hiện chương trình. Một ngoại lệ có thể xảy ra với vô số những lý do khác nhau, ví dụ như:
- Người sử dụng nhập dữ liệu không hợp lệ
- Một file cần mở nhưng không thể nào tìm được thấy
- Kết nối mạng bị ngắt trong quá trình thực hiện giao tiếp cũng như JVM hết bộ nhớ.
Một vài những ngoại lệ đã xảy ra lỗi bởi lỗi của người dùng, một số khác bởi lỗi của các lập trình viên và số khác nữa lại đến từ lỗi của nguồn dữ liệu vật lý.
Để hiểu hơn về cách xử lý ngoại lệ trong Java, bạn cần phải hiểu những loại Exception như sau:
Checked
Đây là một ngoại lệ thường xuyên xảy ra do người dùng mà không thể nào lường trước được bởi những lập trình viên. Ví dụ như một file được mở, nhưng file đó không thể nào tìm thấy và ngoại lệ xảy ra. Những ngoại lệ này không thể được bỏ qua trong quá trình biên dịch được. Checked là các lớp mà kế SQL Exception, IOException,….Checked được kiểm tra ngay tại thời điểm biên dịch compile-time.
Unchecked
Là một ngoại lệ xảy ra ở runtime, ngoại lệ có thể tránh được bởi lập trình. Unchecked là những lớp kế thừa của RuntimeException. Ví dụ như NullPointerException, NullPointerException, ArrayIndexOutOfBoundsException, …. Nếu Unchecked Exception không được kiểm tra tại compile- time, thì thay vào đó chúng sẽ được kiểm tra tại runtime.
Error
Vấn đề xảy ra ở đây là việc vượt quá tầm kiểm soát của những lập trình viên hoặc người sử dụng. Error được bỏ qua trong code của bạn vì bạn hiếm khi có thể làm được gì đó khi chương trình bị error. Ví dụ như AssertionError, VirtualMachineError, OutOfMemoryError,… Nó được bảo vệ trong quá trình mà Java biên dịch.
Handling
Là một kỹ thuật xử lý các Runtime Error như IO, SQL, ClassNotFound, Remote,… Lợi thế chính của việc xử lý ngoại lệ này là để duy trì luồng chuẩn của ứng dụng. Exception thường phá vỡ luống chuẩn của ứng dụng và đó là một trong những lý do tại sao chúng ta nên sử dụng Handling.
Có thể bạn quan tâm:
- Jira là gì? Sử dụng Jira để tối ưu quy trình như thế nào?
- Lập trình web là gì? Những điều cần biết về lập trình web
Cấp bậc như thế nào trong Java
Tất cả các lớp ngoại lệ đều là những lớp con của lớp java.lang.Exception. Lớp ngoại lệ là lớp con của lớp Throwable. Mỗi một loại lớp ngoại lệ khác Error cũng là lớp con của lớp Throwable. Error không thường được đặt bẫy bởi những chương trình Java. Error thường sẽ được tạo ra để thể hiện lỗi trong môi trường runtime. Ví dụ như JVM hết bộ nhớ, thông thường thì các chương trình không thể nào khôi phục được từ các lỗi.
Lớp ngoại lệ được chia làm 2 lớp chính đó là : IOException và RuntimeException.
Làm sao để phân biệt Error và Exception
Error là một lỗi nghiêm trọng đối với hệ thống, trong trường hợp này hệ thống nên bị crash hơn là việc chúng ta cố gắng sửa lỗi
Exception đơn giản chỉ là chỉ ra các trường hợp mà chương trình không thể xử lý được do dữ kiện sai hoặc gặp các vấn đề trong việc kết nối etc. Nó nên được try-catch và xử lý ngay tại thời điểm run-time.
Một số phương thức phổ biến của lớp Exceptions trong Java
Dưới đây là một số danh sách các phương thức phổ biến nhất của lớp Throwable trong Java:
- public String getMessage(): Trả về message cụ thể với ngoại lệ đã xảy ra. Message này được khởi tạo bởi những phương thức constructor của Throwable.
- public Throwable getCause(): Trả lại nguyên nhân xảy ra exception biểu diễn bởi đối tượng Throwable
- public String toString(): Trả lại tên của lớp và kết hợp với kết quả của phương thức get Message()
- public void printStackTrace(): In ra những kết quả của phương thức toString cùng với stack trace đến System.err.
Trên đây là một số thông tin về Exception mà chúng tôi muốn chia sẻ đến bạn trong ngày hôm nay. Mong rằng qua bài viết này bạn sẽ hiểu rõ hơn về khái niệm này. Hãy liên hệ với chúng tôi nếu bạn có bất kỳ câu hỏi hoặc những thắc mắc liên quan đến lập trình bạn nhé!
FPT Aptech trực thuộc Tổ chức Giáo dục FPT có hơn 25 năm kinh nghiệm đào tạo lập trình viên quốc tế tại Việt Nam, và luôn là sự lựa chọn ưu tiên của các sinh viên và nhà tuyển dụng. |