Java Exceptions - Ngoại lệ trong Java
1. Giới thiệu
Exception là một lỗi đặc biệt. Lỗi này xuất hiện vào lúc thực thi chương trình. Các trạng thái không bình thường xảy ra trong khi thi hành chương trình tạo ra các exception. Những trạng thái này không được biết trước trong khi ta đang xây dựng chương trình. Nếu bạn không phân phối các trạng thái này thì exception có thể bị kết thúc đột ngột. Ví dụ, việc chia cho 0 sẽ tạo một lỗi trong chương trình. Ngôn ngữ Java cung cấp bộ máy dùng để xử lý ngoại lệ rất tuyệt vời. Việc xử lý này làm hạn chế tối đa trường hợp hệ thống bị phá vỡ (crash) hay hệ thống bị ngắt đột ngột. Tính năng này làm cho Java là một ngôn ngữ lập trình mạnh.
2. Mục đích của việc xử lý ngoại lệ
Một chương trình nên có cơ chế xử lý ngoại lệ thích hợp. Nếu không, chương trình sẽ bị ngắt khi một exception xảy ra. Trong trường hợp đó, tất cả các nguồn tài nguyên mà hệ thống trước kia phân phối sẽ được di dời trong cùng trạng thái. Điều này gây lãng phí tài nguyên. Để tránh trường hợp này, tất cả các nguồn tài nguyên mà hệ thống phân phối nên được thu hồi lại. Tiến trình này đòi hỏi cơ chế xử lý ngoại lệ thích hợp.
Cho ví dụ, xét thao tác nhập xuất (I/O) trong một tập tin. Nếu việc chuyển đổi kiểu dữ liệu không thực hiện đúng, một ngoại lệ sẽ xảy ra và chương trình bị hủy mà không đóng lại tập tin. Lúc đó tập tin dễ bị hư hại và các nguồn tài nguyên được cấp phát cho tập tin không được thu hồi lại cho hệ thống.
3. Xử lý ngoại lệ
Khi một ngoại lệ xảy ra, đối tượng tương ứng với ngoại lệ đó được tạo ra. Đối tượng này sau đó được truyền cho phương thức là nơi mà ngoại lệ xảy ra. Đối tượng này chứa thông tin chi tiết về ngoại lệ. Thông tin này có thể được nhận về và được xử lý. Các môi trường runtime như 'IllegalAccessException', 'EmptyStackException' v.v… có thể chặn được các ngoại lệ. Đoạn mã trong chương trình đôi khi có thể tạo ra các ngoại lệ. Lớp 'throwable' được Java cung cấp là lớp trên nhất của lớp Exception, lớp này là lớp cha của các ngoại lệ khác nhau.
4. Hệ thống cấp bậc của các lớp ngoại lệ trong Java
5. Xử lý ngoại lệ
Trong Java, mô hình xử lý ngoại lệ kiểm tra việc xử lý những hiệu ứng lề (lỗi), được biết đến là mô hình ‘catch và throw’. Trong mô hình này, khi một lỗi xảy ra, một ngoại lệ sẽ bị chặn và được đưa vào trong một khối. Người lập trình viên nên xét các trạng thái ngoại lệ độc lập nhau từ việc điều khiển thông thường trong chương trình. Các ngoại lệ phải được bắt giữ nếu không chương trình sẽ bị ngắt.
Ngôn ngữ Java cung cấp 5 từ khoá sau để xử lý các ngoại lệ:
- try
- catch
- throw
- throws
- finally
6. Một số class ngoại lệ
Ngoại lệ |
Mô tả |
RuntimeException |
Lớp cơ sở cho nhiều ngoại lệ java.lang |
ArthmeticException |
Trạng thái lỗi về số, ví dụ như ‘chia cho 0’ |
IllegalAccessException |
Lớp không thể truy cập |
IllegalArgumentException |
Phương thức nhận một đối số không hợp lệ |
ArrayIndexOutOfBoundsExeption |
Kích thước của mảng lớn hơn 0 hay lớn hơn kích thước thật sự của mảng |
NullPointerException |
Khi muốn truy cập đối tượng null |
SecurityException |
Việc thiết lập cơ chế bảo mật không được hoạt động |
ClassNotFoundException |
Không thể nạp lớp yêu cầu |
NumberFormatException |
Việc chuyển đối không thành công từ chuỗi sang số thực |
AWTException |
Ngoại lệ về AWT |
IOException |
Lớp cha của các ngoại lệ I/O |
FileNotFoundException |
Không thể định vị tập tin |
EOFException |
Kết thúc một tập tin |
NoSuchMethodException |
Phương thức yêu cầu không tồn tại |
InterruptedException |
Khi một luồng bị ngắt |
No Comments