Từ Khóa throw (Throw Keywords)

Mục đích: Được sử dụng để ném ra một ngoại lệ cụ thể trong khối lệnh của phương thức.

Vị trí sử dụng: Bên trong thân phương thức. Thường đi kèm với từ khóa new để tạo một đối tượng ngoại lệ.

Cú pháp: throw new ExceptionType("Thông báo lỗi");

Sử dụng với: Bất kỳ loại ngoại lệ nào (checked hoặc unchecked).

Ví dụ 1

Dưới đây là các ví dụ minh họa về việc sử dụng từ khóa throw về ngoại lệ không được kiểm tra (unchecked exception):

Ví dụ: Example.java

public class Example {

    public static void main(String[] args) {
        // Gọi phương thức kiểm tra chuỗi
        checkString(null); // Truyền vào chuỗi null
    }

    public static void checkString(String str) {
        if (str == null) {
            // Ném ngoại lệ không được kiểm tra
            throw new NullPointerException("Chuỗi không được phép là null.");
        }
        System.out.println("Chuỗi hợp lệ: " + str);
    }
}

Kết quả của chương trình là:

Exception in thread "main" java.lang.NullPointerException: Chuỗi không được phép là null.
at Example.checkString(Example.java:11) at Example.main(Example.java:5)

Ví dụ này minh họa cách sử dụng từ khóa throw để ném các loại ngoại lệ không được kiểm tra, giúp bạn hiểu rõ hơn cách làm việc với các loại ngoại lệ này trong Java.

Ví dụ 2

Dưới đây là ví dụ về việc sử dụng từ khóa throw với ngoại lệ được kiểm tra (checked exception):

Ví dụ: Example.java

import java.io.IOException;

public class Example {
    public static void main(String[] args) {
        try {
            readFile(""); // Gọi phương thức có thể ném ra ngoại lệ được kiểm tra
        } catch (IOException e) {
            System.out.println("Đã bắt được ngoại lệ đã kiểm tra: " + e.getMessage());
        }
    }

    // Phương thức ném ra ngoại lệ được kiểm tra
    public static void readFile(String fileName) throws IOException {
        // Giả sử nếu tên tệp không hợp lệ, chúng ta ném ra IOException
        if (fileName == null || fileName.isEmpty()) {
            throw new IOException("Tên tệp không được để trống hoặc rỗng.");
        }
        // Thực hiện đọc tệp (mã giả định)
        System.out.println("Đọc tập tin: " + fileName);
    }
}

Kết quả của chương trình là:

Đã bắt được ngoại lệ đã kiểm tra: Tên tệp không được để trống hoặc rỗng.

Ví dụ này minh họa cách sử dụng từ khóa throw để ném ra ngoại lệ không được kiểm tra và cách xử lý nó bằng từ khóa catch.

Lưu ý: Việc xử lý ngoại lệ không được kiểm tra không bắt buộc phải sử dụng khối try-catch, nhưng trong ví dụ này, chúng ta đã sử dụng khối try-catch để minh họa cách bắt ngoại lệ.

Ví dụ 3

Dưới đây là ví dụ về việc sử dụng từ khóa throw với ngoại lệ không được kiểm tra (unchecked exception). Trong ví dụ này, chúng ta sẽ ném một ngoại lệ không được kiểm tra tùy chỉnh từ một phương thức.

Ví dụ: Example.java

// Tạo một ngoại lệ tùy chỉnh kế thừa từ RuntimeException (unchecked exception)
class CustomUncheckedException extends RuntimeException {
    public CustomUncheckedException(String message) {
        super(message);
    }
}
public class Example {
    public static void main(String[] args) {
        try {
            checkNumber(-5); // Gọi phương thức với số không hợp lệ
        } catch (CustomUncheckedException e) {
            System.out.println("Đã bắt được ngoại lệ chưa được kiểm tra: " + e.getMessage());
        }
    }

    // Phương thức ném ra ngoại lệ không được kiểm tra
    public static void checkNumber(int number) {
        if (number < 0) {
            throw new CustomUncheckedException("Số phải không âm.");
        }
        System.out.println("Số hợp lệ: " + number);
    }
}

Kết quả của chương trình là:

Đã bắt được ngoại lệ chưa được kiểm tra: Số phải không âm.

Ví dụ này minh họa cách sử dụng từ khóa throw để ném ra ngoại lệ không được kiểm tra và cách xử lý nó bằng từ khóa catch.

Lưu ý: Việc xử lý ngoại lệ không được kiểm tra không bắt buộc phải sử dụng khối try-catch, nhưng trong ví dụ này, chúng ta đã sử dụng khối try-catch để minh họa cách bắt ngoại lệ.

Ví dụ 4

Dưới đây là ví dụ về việc sử dụng từ khóa throw với ngoại lệ ném ra từ một khối try-catch:

Ví dụ: Example.java

public class Example {
    public static void main(String[] args) {
        try {
            riskyOperation();
        } catch (Exception e) {
            System.out.println("Ngoại lệ đã bắt gặp: " + e.getMessage());
        }
    }

    public static void riskyOperation() {
        try {
            int result = 10 / 0;
        } catch (ArithmeticException e) {
            throw new IllegalArgumentException("Phép chia cho số không trong hoạt động rủi ro.");
        }
    }
}

Kết quả của chương trình là:

Đã bắt được ngoại lệ chưa được kiểm tra: Số phải không âm.

Ngoại lệ đã bắt gặp: Phép chia cho số không trong hoạt động rủi ro.

IllegalArgumentException là một ngoại lệ không được kiểm tra (unchecked exception) và được xử lý trong phương thức main.

Hy vọng rằng ví dụ này giúp bạn hiểu cách sử dụng throw để ném ngoại lệ và cách ngoại lệ được xử lý trong Java!

Câu Nói Truyền Cảm Hứng

“Bắt đầu ở đâu không quan trọng, quan trọng là bạn sẵn sàng bắt đầu.” – W. Clement Stone

Không Gian Tích Cực

“Chúc bạn luôn giữ vững niềm tin và sức mạnh để vượt qua mọi thử thách trong cuộc sống.”