Tìm hiểu Exception trong Java – Xử lý lỗi với ví dụ thực tế (Survey Example)
Trong lập trình Java nâng cao, Exception (ngoại lệ) là một phần quan trọng giúp chương trình hoạt động ổn định và dễ kiểm soát lỗi. Thay vì để chương trình “crash” khi gặp sai sót, Java cho phép bạn phát hiện, ném (throw) và bắt (catch) các lỗi này để xử lý hợp lý.
Trong bài học hôm nay, chúng ta sẽ cùng tìm hiểu cách xây dựng Exception tùy chỉnh (Custom Exception) thông qua ví dụ thực tế:
Chương trình kiểm tra thông tin người dùng – Survey Program.
Bạn sẽ học cách:
-
Tạo và sử dụng class Exception riêng cho từng loại lỗi (Fullname, Age, Email).
-
Áp dụng cú pháp
throw,try-catchvà cơ chế xử lý ngoại lệ có điều kiện. -
Kiểm thử từng tình huống lỗi và cách hiển thị thông báo phù hợp.
🧩 I. Mục tiêu bài tập
Xây dựng chương trình khảo sát thông tin cá nhân (Survey) với các yêu cầu sau:
1️⃣ Tạo class Survey gồm các thuộc tính:
| Thuộc tính | Kiểu dữ liệu | Mô tả |
|---|---|---|
fullname | String | Họ tên người dùng |
age | int | Tuổi |
email | String | Địa chỉ email |
address | String | Địa chỉ |
note | String | Ghi chú thêm |
2️⃣ Hàm tạo có đầy đủ tham số
Khi khởi tạo đối tượng Survey, cần kiểm tra tính hợp lệ dữ liệu:
-
fullnamechỉ được chứa chữ cái a–z, A–Z và dấu cách.
→ Nếu sai, ném lỗi (throw)FullnameFormatException. -
agephải lớn hơn 0.
→ Nếu sai, ném lỗiAgeFormatException. -
emailphải chứa ký tự “@”.
→ Nếu sai, ném lỗiEmailFormatException.
3️⃣ Tạo 3 class Exception tùy chỉnh
-
FullnameFormatException -
AgeFormatException -
EmailFormatException
Các class này kế thừa từ Exception và giúp mô tả rõ ràng từng loại lỗi.
4️⃣ Class Main
Tạo 4 đối tượng Survey để test các trường hợp:
-
Sai định dạng fullname.
-
Sai tuổi (age ≤ 0).
-
Sai định dạng email.
-
Trường hợp hợp lệ (thành công).
⚠️ Lưu ý: Không dùng
Scanner, dữ liệu được truyền trực tiếp từmain().
⚙️ II. Source Code chi tiết
🧱 1. Class FullnameFormatException.java
🧱 2. Class AgeFormatException.java
🧱 3. Class EmailFormatException.java
🧱 4. Class Survey.java
🧱 5. Class Main.java
🔍 III. Giải thích chi tiết
-
throw: Dùng để ném một exception khi điều kiện không thỏa mãn. -
try – catch: Giúp chương trình bắt lỗi và tiếp tục chạy thay vì dừng đột ngột. -
Custom Exception: Giúp bạn phân biệt rõ loại lỗi nào đang xảy ra, dễ xử lý và gỡ lỗi hơn.
Ví dụ chạy chương trình:
💡 IV. Lợi ích khi học Exception Handling
-
Giúp chương trình an toàn & đáng tin cậy hơn: Không bị crash vì lỗi nhỏ.
-
Tách biệt logic xử lý và logic kiểm lỗi → mã sạch hơn, dễ bảo trì.
-
Tạo trải nghiệm người dùng tốt hơn khi có thông báo lỗi rõ ràng.
-
Bắt buộc trong các project thực tế (đặc biệt khi thao tác file, database, API).
🧭 V. Kết luận
Qua bài học này, bạn đã hiểu rõ:
-
Cách tạo Custom Exception trong Java.
-
Cách kiểm tra dữ liệu đầu vào và xử lý lỗi bằng try-catch.
-
Cách áp dụng Exception vào các tình huống thực tế như nhập form, kiểm tra dữ liệu, hoặc xác thực thông tin.
Nếu bạn đang học Java Nâng Cao, thì đây là nền tảng cực kỳ quan trọng giúp bạn làm chủ lập trình hướng đối tượng (OOP) và xử lý lỗi chuyên nghiệp.
👉 Tiếp theo, bạn nên học thêm:
-
Try-with-resources & File I/O
-
Exception chaining
-
Logging Exception trong hệ thống lớn