Trong Java, throw và throws là hai khái niệm quan trọng liên quan đến xử lý ngoại lệ, nhưng chúng có mục đích và cách sử dụng khác nhau. Bài viết này sẽ giải thích chi tiết sự khác biệt giữa throw và throws, cùng với ví dụ minh họa để giúp bạn hiểu rõ hơn.
throwthrow là một từ khóa được sử dụng để ném một ngoại lệ cụ thể trong một phương thức hoặc khối mã. Khi bạn muốn ném một ngoại lệ, bạn sử dụng từ khóa này, theo sau là một đối tượng của lớp ngoại lệ.throw có thể được sử dụng với cả ngoại lệ đã được kiểm tra (checked) và chưa được kiểm tra (unchecked).throwsthrows là một từ khóa được sử dụng trong khai báo phương thức để chỉ ra rằng phương thức có thể ném một hoặc nhiều ngoại lệ. Khi bạn khai báo một phương thức với throws, bạn đang thông báo cho người dùng phương thức rằng họ cần phải xử lý ngoại lệ đó.throws chỉ có thể được sử dụng với ngoại lệ đã được kiểm tra (checked exceptions).throwKhi bạn muốn ném một ngoại lệ trong thân phương thức, bạn sử dụng throw. Dưới đây là một ví dụ:
public class Example {
public void checkAge(int age) {
if (age < 18) {
throw new IllegalArgumentException("Tuổi phải lớn hơn hoặc bằng 18");
}
}
public static void main(String[] args) {
Example example = new Example();
example.checkAge(15); // Ném ngoại lệ
}
}
throwsKhi bạn khai báo một phương thức có thể ném ngoại lệ, bạn sử dụng throws. Ví dụ:
public class Example {
public void mayThrowException() throws Exception {
throw new Exception("Đã xảy ra lỗi!");
}
public static void main(String[] args) {
Example example = new Example();
try {
example.mayThrowException(); // Gọi phương thức có thể ném ngoại lệ
} catch (Exception e) {
System.out.println("Ngoại lệ: " + e.getMessage());
}
}
}
| Khía cạnh | throw | throws |
|---|---|---|
| Chức năng | Ném một ngoại lệ cụ thể | Thông báo rằng phương thức có thể ném ngoại lệ |
| Sử dụng | Trong thân phương thức | Trong khai báo phương thức |
| Loại ngoại lệ | Cả checked và unchecked | Chỉ checked exceptions |
Sự khác biệt giữa throw và throws là rất quan trọng trong việc xử lý ngoại lệ trong Java. throw được sử dụng để ném một ngoại lệ cụ thể, trong khi throws được sử dụng trong khai báo phương thức để thông báo cho người dùng rằng phương thức có thể ném một hoặc nhiều ngoại lệ. Hiểu rõ sự khác biệt này sẽ giúp bạn xử lý ngoại lệ một cách hiệu quả hơn trong ứng dụng Java của mình.