Exception Handling
try/catch/finally, checked vs unchecked, try-with-resources, custom exception, vì sao nuốt exception là anti-pattern, và exception ở cấp bytecode (exception table).
Nội dung
Danh sách bài học
- 01~12 phút
try, catch, finally — cây Throwable và cơ chế throw
Cây Throwable (Error, Exception, RuntimeException), cơ chế try/catch/finally, throw, multi-catch Java 7+ và các anti-pattern cần tránh.
- 02~12 phút
Đọc stack trace và cause chain — giữ dấu vết lỗi qua mọi layer
Cách đọc stack trace production, cơ chế fillInStackTrace của JVM, kỹ thuật giữ nguyên nhân gốc qua cause chain và suppressed exception.
- 03~12 phút
Exception table và cost của exception — throw rẻ, tạo đắt
Exception table trong bytecode giúp JVM dispatch catch bằng table lookup, không tốn runtime check. Phân tích chi phí fillInStackTrace và tối ưu hot path.
- 04~12 phút
Checked vs Unchecked — cuộc tranh luận lớn trong thiết kế Java
Phân biệt checked và unchecked exception, cơ chế compiler kiểm tra throws, xu hướng unchecked trong Java hiện đại và kỹ thuật uncheck cho Stream API.
- 05~12 phút
try-with-resources — tự đóng resource không rò rỉ
Cú pháp try-with-resources từ Java 7, interface AutoCloseable, thứ tự close nhiều resource, suppressed exception, và vì sao pattern close-trong-finally cổ điển dễ sai.
- 06~12 phút
Custom exception — thiết kế phân cấp exception nghiệp vụ
Khi nào tạo exception riêng, cấu trúc class mang context dữ liệu, phân cấp domain hierarchy và tích hợp Global Exception Handler trong ứng dụng.
- 07~25 phút
Mini-challenge: Bộ kiểm thực mượn ấn phẩm với custom exception
Thực hành thiết kế bộ kiểm thực mượn sách thư viện, gom nhiều lỗi vào ValidationException và tích hợp xử lý lỗi tập trung.