Trong hướng dẫn này, chúng ta sẽ tìm hiểu về các ngoại lệ(exceptions) trong Java. Chúng ta 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 bất ngờ 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à:
- Đầu vào của người dùng không hợp lệ
- Lỗi thiết bị
- Mất kết nối mạng
- Giới hạn vật lý (hết bộ nhớ đĩa)
- Lỗi code
- Mở một file không có sẵn
Nội dung chính
1. Phân cấp ngoại lệ trong Java
Dưới đây là một sơ đồ đơn giản 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, lớp Throwable 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(Error) và Ngoại lệ(exception).
1.1. Lỗi(Error)
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.
1.2. Ngoại lệ(exception)
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.
2. 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.
2.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à 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à:
- Sử dụng API không đúng cách – IllegalArgumentException
- Truy cập con trỏ rỗng (thiếu khởi tạo một biến) – NullPointerException
- Truy cập mảng ngoài giới hạn – ArrayIndexOutOfBoundsException
- Chia một số cho 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.2. IOException
An IOException còn được gọi là một ngoại lệ đã kiểm tra . Chúng được kiểm tra bởi trình biên dịch 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 ngoại lệ đã kiểm tra là:
- Cố gắng mở một file không tồn tại dẫn đến FileNotFoundException
- Cố gắng đọc hết phần cuối củ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.
Cài ứng dụng cafedev để dễ dàng cập nhật tin và học lập trình mọi lúc mọi nơi tại đây.
Nguồn và Tài liệu tiếng anh tham khảo:
Tài liệu từ cafedev:
- Full series tự học Java từ cơ bản tới nâng cao tại đây nha.
- Ebook về Java tại đây.
- Các nguồn kiến thức MIỄN PHÍ VÔ GIÁ từ cafedev tại đây
Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:
Chào thân ái và quyết thắng!