Xâu chuỗi ngoại lệ

Một phần của tài liệu Giáo án - Bài giảng: LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG TRONG JAVA (Trang 105 - 106)

Chương 9: Ngoại lệ Mục tiêu bài học

9.3.3.Xâu chuỗi ngoại lệ

Xâu chuỗi ngoại lệ (exception chaining) hay bao đóng ngoại lệ, là một kỹ thuật lập trình hướng đối tượng điều quản ngoại lệ bằng việc “ném lại” re-throw” một ngoại lệ đã đón bắt sau khi bao đóng (wrapping) nó với một ngoại lệ mới. Ngoại lệ gốc được lưu như thuộc tính (như nguyên nhân) của ngoại lệ mới. Ý tưởng là một phương thức ném các ngoại lệ được định nghĩa ở cùng mức như của chính phương thức mà khơng loại bỏ các thơng tin từ các mức thấp hơn.

Đoạn mã thường dùng trong Java để đón bắt ngoại lệ và ném ra ngoại lệ khác.

try{

}catch(YourException e){

throw new MyException(); }

Nếu thông tin từ ngoại lệ gốc bị mất, việc dị lỗi trở nên khơng thể. Vì thế, trong khi bao đóng các ngoại lệ, một bộ truy xuất thường được cung cấp để trích xuất thơng tin. Điều này cho phép các nhà phát triển hình thành các xâu chuỗi ngoại lệ gồm các ngoại lệ được bao đóng.

Ưu điểm của sử dụng khả năng xâu chuỗi ngoại lệ là:

 Sự kiện một ngoại lệ được tạo ra từ các mức thấp hơn có thể được ghi lại khơng quan tâm ngoại lệ đó là gì?

 Vì các API phổ biến được sử dụng để ghi lại sự kiện một ngoại lệ được tạo ra từ các mức thấp hơn, sẽ khuyến khích các lập trình viên duy trì hồ sơ về xâu chuỗi ngoại lệ (exception chain)

 Hồ sơ (record) một ngoại lệ cụ thể gây ra ngoại lệ khác có thể được lưu và tham chiếu đến sau đó.

Để giữ hồ sơ của xâu chuỗi ngoại lệ, hai phương thức của lớp Throwable được sử dụng. Phương thức getCause() và initCause(Throwable) và hai hàm dựng Throwable(Throwable) và Throwable(String, Throwable) được dùng để ghi xâu chuỗi của các ngoại lệ. Tuy nhiên, thậm chí khơng sử dụng các hàm dựng cũng có thể bao đóng các lớp bọc bằng phương thức initCause().

Sửa đổi cài đặt của phương thức Throwable.printStackTrace để hiển thị các lần vết ngược với toàn bộ xâu chuỗi gây ra ngoại lệ. Phương thức mới

getStackTrace() cung cấp truy nhập do lập trình để theo dõi thơng tin lần vết được cung cấp bởi printStackTrace.

Một phần của tài liệu Giáo án - Bài giảng: LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG TRONG JAVA (Trang 105 - 106)