Vào 06/06 vừa qua, buổi seminar “Lập trình đánh cá Try-Catch trong Java” kéo dài 2 giờ và được tổ chức trên nền tảng Google Meet. Buổi chia sẻ thu hút sự tham dự của 100 bạn sinh viên FPT Polytechnic Hà Nội gồm các nội dung chính như các khái niệm cơ bản về ngoại lệ, các cấp bậc của ngoại lệ trong Java, cách xử lý ngoại lệ hiệu quả.

Ba giảng viên gồm thầy Nguyễn Quang Hà, thầy Trần Hoàng Minh Tiến và cô Nguyễn Thị Nhung là những người dẫn dắt buổi seminar diễn ra thành công tốt đẹp. Các nội dung được triển khai cụ thể sau đây:
Khái niệm ngoại lệ
Định nghĩa ngoại lệ
Ngoại lệ (exception) trong lập trình là các tình huống bất thường xảy ra trong quá trình thực thi chương trình, khiến cho chương trình không thể tiếp tục chạy bình thường. Trong Java, ngoại lệ là một đối tượng mô tả một tình huống không mong muốn hoặc lỗi xảy ra trong quá trình thực thi.
Phân loại ngoại lệ
Ngoại lệ trong Java được chia thành hai loại chính:
- Checked Exceptions: Những ngoại lệ này được kiểm tra tại thời điểm biên dịch. Các ngoại lệ này phải được xử lý hoặc được khai báo trong phương thức. Ví dụ về checked exceptions bao gồm IOException, SQLException.
- Unchecked Exceptions: Những ngoại lệ này không được kiểm tra tại thời điểm biên dịch và không bắt buộc phải xử lý. Chúng bao gồm RuntimeException và các lớp con của nó như NullPointerException, ArrayIndexOutOfBoundsException.
Sự khác biệt giữa Error và Exception
Error: Những lỗi nghiêm trọng xảy ra tại thời điểm chạy mà ứng dụng không thể xử lý, như OutOfMemoryError, StackOverflowError. Errors thường đại diện cho các vấn đề với JVM và không nên được bắt hoặc xử lý.
Exception: Những tình huống mà ứng dụng có thể cố gắng xử lý để khôi phục từ lỗi đó và tiếp tục chạy bình thường.
Cấp bậc ngoại lệ trong Java
Java sử dụng một hệ thống phân cấp để tổ chức các loại ngoại lệ khác nhau. Cấp bậc ngoại lệ bắt đầu từ lớp Throwable, lớp cơ sở cho tất cả các ngoại lệ và lỗi.
- Throwable: Lớp cơ sở cho tất cả các loại ngoại lệ và lỗi.
- Error: Đại diện cho các lỗi nghiêm trọng mà ứng dụng không thể xử lý.
- Exception: Đại diện cho các tình huống bất thường mà ứng dụng có thể cố gắng xử lý.
- RuntimeException: Một lớp con của Exception và là cơ sở cho các ngoại lệ không được kiểm tra.

Xử lý ngoại lệ trong Java
Cấu trúc Try-Catch
Cấu trúc try-catch trong Java được sử dụng để xử lý ngoại lệ. Mã mà bạn nghĩ có thể gây ra ngoại lệ được đặt trong khối try. Nếu ngoại lệ xảy ra, khối catch sẽ được thực thi.
Cú pháp
try {
// Mã có thể gây ra ngoại lệ
} catch (ExceptionType e) {
// Xử lý ngoại lệ
}
Ví dụ cơ bản
public class ExceptionHandlingExample {
public static void main(String[] args) {
try {
int result = 10 / 0; // Gây ra ArithmeticException
} catch (ArithmeticException e) {
System.out.println(“Không thể chia cho 0: ” + e.getMessage());
}
}
}
Nhiều khối Catch
Bạn có thể sử dụng nhiều khối catch để xử lý các loại ngoại lệ khác nhau. Mỗi khối catch được xử lý theo thứ tự từ trên xuống dưới.
try {
// Mã có thể gây ra ngoại lệ
} catch (NullPointerException e) {
// Xử lý NullPointerException
} catch (ArrayIndexOutOfBoundsException e) {
// Xử lý ArrayIndexOutOfBoundsException
} catch (Exception e) {
// Xử lý tất cả các loại ngoại lệ khác
}
Khối Finally
Khối finally chứa mã sẽ được thực thi bất kể ngoại lệ có xảy ra hay không. Điều này thường được sử dụng để giải phóng tài nguyên như đóng tệp hoặc kết nối mạng.
try {
// Mã có thể gây ra ngoại lệ
} catch (Exception e) {
// Xử lý ngoại lệ
} finally {
// Mã luôn được thực thi
}
Tuyên bố ngoại lệ với từ khóa Throws
Một phương thức có thể khai báo rằng nó có thể ném một ngoại lệ bằng cách sử dụng từ khóa throws. Điều này cho phép người gọi phương thức đó biết rằng họ cần phải xử lý ngoại lệ đó.
public void readFile(String fileName) throws IOException {
// Mã đọc tệp có thể gây ra IOException
}
Tạo ngoại lệ tùy chỉnh
Bạn có thể tạo các lớp ngoại lệ tùy chỉnh bằng cách kế thừa từ lớp Exception hoặc RuntimeException.

Tầm quan trọng của xử lý ngoại lệ
Bảo đảm tính ổn định của ứng dụng
Xử lý ngoại lệ đúng cách giúp bảo đảm rằng ứng dụng của bạn có thể tiếp tục chạy ngay cả khi xảy ra lỗi. Thay vì bị dừng đột ngột, ứng dụng có thể thông báo lỗi cho người dùng và cố gắng khôi phục từ lỗi đó.
Bảo vệ tài nguyên
Sử dụng khối finally hoặc cấu trúc try-with-resources để bảo đảm rằng tài nguyên như tệp tin, kết nối cơ sở dữ liệu được đóng đúng cách, ngay cả khi xảy ra ngoại lệ.
Tổng kết
Buổi seminar đã cung cấp một cái nhìn toàn diện về cách xử lý ngoại lệ trong Java, từ các khái niệm cơ bản đến các kỹ thuật xử lý ngoại lệ nâng cao. Xử lý ngoại lệ không chỉ giúp ứng dụng của bạn trở nên ổn định hơn mà còn tăng cường khả năng bảo trì và đọc mã. Việc nắm vững các kỹ thuật này là một kỹ năng quan trọng cho bất kỳ lập trình viên Java nào, giúp việc xây dựng các ứng dụng mạnh mẽ và đáng tin cậy.
Giảng viên Trần Hoàng Minh Tiến
Bộ môn Ứng dụng phần mềm
FPT Polytechnic Hà Nội

