Java: Xác định những ngoại lệ được ném bởi một phương thức

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

bài viết trước ta đã biết cách viết một trình xử lý ngoại lệ cho phương thức writeList trong lớp ListOfNumbers. Đôi khi, mã lệnh có thể thích hợp để bắt ngoại lệ có thể xảy ra bên trong nó. Tuy nhiên, trong trường hợp khác lại là tốt hơn để cho một phương thức chuyển tiếp lên call stack để xử lý ngoại lệ. Ví dụ, nếu bạn đang cung cấp lớp ListOfNumbers như là một phần của một gói các lớp, thì bạn có thể không dự đoán được nhu cầu của tất cả những người sử dụng gói của bạn. Trong trường hợp này, tốt hơn là không bắt ngoại lệ và cho phép phương thức chuyển lên call stack để xử lý nó.

Nếu phương thức writeList không bắt được những ngoại lệ checked có thể xảy ra bên trong nó, thì nó phải xác định rằng nó có thể ném được những ngoại lệ này. Hãy thay đổi phương thức writeList ban đầu để xác định các ngoại lệ có thể ném thay vì bắt chúng. Nhắc lại, đây là phiên bản gốc của phương thức writeList nên sẽ không biên dịch.

public void writeList() {
    PrintWriter out = new PrintWriter(new FileWriter("OutFile.txt"));
    for (int i = 0; i < SIZE; i++) {
        out.println("Value at: " + i + " = " + list.get(i));
    }
    out.close();
}

Để xác định rằng writeList có thể ném hai ngoại lệ, thì ta thêm một mệnh đề throws tới khai báo phương thức cho phương thức writeList. Mệnh đề throws bao gồm từ khóa throws và phía sau nó là các ngoại lệ phân tách nhau bằng dấu phảy (,) được ném bởi phương thức đó. Dưới đây là một ví dụ về việc sử dụng mệnh đề throws:

public void writeList() throws IOException, IndexOutOfBoundsException {

Ta cần nhớ rằng IndexOutOfBoundsException là một ngoại lệ unchecked, do vậy việc đưa nó vào sau mệnh đề throws là không bắt buộc, nên ta có thể viết lại tương đương như sau:

public void writeList() throws IOException {

» Tiếp: Dùng throw để ném ngoại lệ
« Trước: Cách sử dụng try-catch-finally
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 !!!