Trong hướng dẫn này, chúng ta sẽ tìm hiểu về các ngoại lệ trong Java. Chúng tôi sẽ đề cập đến các lỗi, ngoại lệ và các loại ngoại lệ khác nhau trong Java.
Ngoại lệ là một sự kiện không mong muốn xảy ra trong quá trình thực hiện chương trình. Nó ảnh hưởng đến luồng hướng dẫn chương trình có thể khiến chương trình kết thúc bất thường.
Một ngoại lệ có thể xảy ra vì nhiều lý do. Một số trong số đó là:
- Invalid user input
- Device failure
- Loss of network connection
- Physical limitations (out of disk memory)
- Code errors
- Opening an unavailable file
Phân cấp ngoại lệ Java
Đây là một sơ đồ đơn giản hóa của hệ thống phân cấp ngoại lệ trong Java.
Như bạn có thể thấy từ hình trên, Throwable
lớp là lớp gốc trong hệ thống phân cấp.
Lưu ý rằng hệ thống phân cấp chia thành hai nhánh: Lỗi và Ngoại lệ.
Lỗi
Các lỗi đại diện cho các điều kiện không thể khôi phục như máy ảo Java (JVM) hết bộ nhớ, rò rỉ bộ nhớ, lỗi tràn ngăn xếp, không tương thích thư viện, đệ quy vô hạn, v.v.
Lỗi thường nằm ngoài tầm kiểm soát của lập trình viên và chúng ta không nên cố gắng xử lý lỗi.
Ngoại lệ
Các ngoại lệ có thể được chương trình bắt và xử lý.
Khi một ngoại lệ xảy ra trong một phương thức, nó sẽ tạo ra một đối tượng. Đối tượng này được gọi là đối tượng ngoại lệ.
Nó chứa thông tin về ngoại lệ như tên và mô tả của ngoại lệ và trạng thái của chương trình khi ngoại lệ xảy ra.
Chúng ta sẽ tìm hiểu cách xử lý các ngoại lệ này trong hướng dẫn tiếp theo. Trong hướng dẫn này, bây giờ chúng ta sẽ tập trung vào các loại ngoại lệ khác nhau trong Java.
Các loại ngoại lệ trong Java
Hệ thống phân cấp ngoại lệ cũng có hai nhánh: RuntimeException
và IOException
.
1. RuntimeException
Một ngoại lệ thời gian chạy xảy ra do lỗi lập trình. Chúng còn được gọi là các trường hợp ngoại lệ không được kiểm tra .
Các ngoại lệ này không được kiểm tra tại thời điểm biên dịch mà là thời gian chạy. Một số ngoại lệ thời gian chạy phổ biến là:
- Improper use of an API –
IllegalArgumentException
- Null pointer access (missing the initialization of a variable) –
NullPointerException
- Out-of-bounds array access –
ArrayIndexOutOfBoundsException
- Dividing a number by 0 –
ArithmeticException
Bạn có thể nghĩ về nó theo cách này. “Nếu đó là một ngoại lệ thời gian chạy, đó là lỗi của bạn”.
Các NullPointerException
sẽ không xảy ra nếu bạn đã kiểm tra xem biến được khởi tạo hay không trước khi sử dụng nó.
An ArrayIndexOutOfBoundsException
sẽ không xảy ra nếu bạn kiểm tra chỉ số mảng so với các giới hạn của mảng.
2. IOException
An IOException
còn được gọi là một ngoại lệ đã kiểm tra . Chúng được trình biên dịch kiểm tra tại thời điểm biên dịch và lập trình viên được nhắc xử lý các ngoại lệ này.
Một số ví dụ về các trường hợp ngoại lệ đã kiểm tra là:
- Trying to open a file that doesn’t exist results in
FileNotFoundException
- Trying to read past the end of a file
Bây giờ chúng ta đã biết về các ngoại lệ, chúng ta sẽ tìm hiểu về cách xử lý các ngoại lệ trong hướng dẫn tiếp theo.