Java: Ngoại lệ là gì?

Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực

Ngoại lệ (exception) là cụm viết tắt của "sự kiện ngoại lệ - exceptional event".


Định nghĩa: Ngoại lệ là một sự kiện xảy ra trong quá trình thực thi chương trình, làm gián đoạn dòng chảy bình thường của các chỉ thị của chương trình.

Khi một lỗi xảy ra trong một phương thức, phương thức này tạo ra một đối tượng và đưa nó vào hệ thống runtime. Các đối tượng, được gọi là đối tượng ngoại lệ, có chứa thông tin về lỗi, bao gồm loại lỗi và trạng thái của chương trình khi xảy ra lỗi. Việc tạo một đối tượng ngoại lệ và đưa nó vào hệ thống runtime được gọi là ném một ngoại lệ.

Sau khi phương thức ném ngoại lệ, hệ thống runtime sẽ cố gắng tìm một điều gì đó để xử lý nó. Tập các "điều gì đó" có thể để xử lý ngoại lệ ở đây là danh sách có thứ tự các phương thức đã được gọi để lấy phương thức nơi xảy ra lỗi. Danh sách các phương thức này được gọi là call stack (xem hình dưới đây).

The call stack showing three method calls, where the first method called has the exception handler.
Call stack.

Hệ thống thời gian thực sẽ tìm trong call stack phương thức chứa khối mã có thể xử lý ngoại lệ. Khối mã này được gọi là trình xử lý ngoại lệ (exception handler). Việc tìm kiếm bắt đầu với phương thức nơi xảy ra lỗi và xử lý thông qua call stack theo thứ tự ngược với các phương thức được gọi. Khi một trình xử lý thích hợp được tìm thấy thì hệ thống runtime sẽ truyền ngoại lệ tới trình xử lý đó. Trình xử lý ngoại lệ được coi là phù hợp nếu kiểu của đối tượng ném ngoại lệ tương thích với kiểu có thể được xử lý bởi trình xử lý.

Trình xử lý ngoại lệ đã được chọn được gọi là bắt ngoại lệ (catch the exception). Nếu hệ thống runtime tìm trên tất cả các phương thức trên call stack nhưng không có một trình xử lý ngoại lệ nào thích hợp như ở hình dưới đây, thì hệ thống runtime (và do đó chương trình) sẽ chấm dứt.

The call stack showing three method calls, where the first method called has the exception handler.
Tìm trình xử lý ngoại lệ trên toàn call stack.

Việc dùng ngoại lệ để quản lý lỗi có một số ưu điểm so với các kỹ thuật quản trị lỗi truyền thống. Ta có thể xem các ưu điểm này tại bài viết Ưu điểm của ngoại lệ.

» Tiếp: Bắt hoặc chỉ định yêu cầu
« Trước: Lớp lồng nhau (Nested Classes)
Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực
Copied !!!