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).

7 bài · ~125 phútMiễn phí

Nội dung

Danh sách bài học

  1. 01

    try / catch / finally — cây Throwable và cơ chế throw

    Cây Throwable (Error, Exception, RuntimeException), try/catch/finally, throw, multi-catch Java 7+. Anti-pattern nuốt exception. Phần cơ chế sâu (stack trace, cause chain, exception table) ở bài 2.

    ~20 phút
  2. 02

    Đọc stack trace và cause chain — giữ dấu vết lỗi qua mọi layer

    Cách đọc stack trace production trong 10 giây, JVM build stack trace qua fillInStackTrace thế nào, cause chain giữ exception gốc khi wrap qua layer, và suppressed exception.

    ~14 phút
  3. 03

    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. Chi phí thật nằm ở fillInStackTrace — anti-pattern control flow, kỹ thuật tối ưu hot path, và StackWalker.

    ~14 phút
  4. 04

    Checked vs Unchecked — cuộc tranh cãi kéo dài 20 năm

    Phân biệt checked và unchecked exception, khi nào Java bắt khai throws, vì sao cộng đồng Java modern nghiêng về unchecked, và cách wrap checked thành unchecked đúng.

    ~16 phút
  5. 05

    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.

    ~15 phút
  6. 06

    Custom exception — thiết kế hierarchy exception nghiệp vụ

    Khi nào tạo exception riêng, cấu trúc class (constructor với cause, field context), hierarchy theo domain, global exception handler pattern, và cách chọn giữa exception và return value.

    ~16 phút
  7. 07

    Mini-challenge: Validator chain với exception

    Bài thực hành khép lại module Exception Handling — xây validator kiểm tra User đăng ký, gom nhiều lỗi thành một ValidationException, và mô phỏng global handler.

    ~30 phút