Phương thức receive() của lớp DatagramSocket có thể gây ra Exception nào?
Trả lời:
Đáp án đúng: B
Phương thức `receive()` của lớp `DatagramSocket` được sử dụng để nhận các gói dữ liệu đến. Trong quá trình này, một số ngoại lệ có thể xảy ra.
* **SocketException:** Ngoại lệ này xảy ra nếu có lỗi liên quan đến socket ở cấp độ thấp, ví dụ như socket bị đóng hoặc có lỗi mạng.
* **IOException:** Ngoại lệ này là một lớp cha của nhiều loại ngoại lệ liên quan đến các thao tác I/O (nhập/xuất). `SocketException` là một loại `IOException` đặc biệt. Cụ thể, `IOException` có thể xảy ra nếu có vấn đề trong quá trình đọc dữ liệu từ socket.
* **UnknownHostException:** Ngoại lệ này xảy ra khi không thể xác định địa chỉ IP của một host.
* **UnknownPortException:** Không có ngoại lệ `UnknownPortException` trong Java.
Như vậy, phương thức `receive()` có thể gây ra cả `SocketException` và `IOException`. Tuy nhiên, `IOException` bao quát hơn và có thể xảy ra trong nhiều tình huống khác nhau liên quan đến I/O, còn `SocketException` đặc trưng cho các lỗi liên quan trực tiếp đến socket. Do đó, `IOException` là đáp án chính xác hơn trong trường hợp này vì nó bao gồm cả khả năng `SocketException` xảy ra.





