• Ví dụ: khi đang thao tác trên 1 tập tin nếu gặp lỗi mà không xử lý và chương trình kết thúc đột ngột thì file sẽ không được đóng và có thể dẫn đến hư file và các nguồn tài nguyên sẽ kh[r]
Trang 1CÔNG NGHỆ JAVA
CH5 QUẢN LÝ LỖI VÀ GOM RÁC
Quang Dieu Tran PhD
http://sites.google.com/site/tranlectures
Trang 2Mục tiêu
• Định nghĩa được exception là gì.
• Phân loại được các exception
• Sử dụng được cú pháp try catch finally
• Biết cách tự quản lý exception
• Giải thích được cơ chế gom rác của Java
2 4/7/2018 http://sites.google.com/site/tranlectures
Trang 3Nội dung
1- Exception là gì?
2- Cấu trúc quản lý lỗi của Java
3- Mô hình try catch finally
4- Sử dụng throws
5- Tự định nghĩa exceptions
6- Cơ chế gom rác
7- Tóm tắt-trắc nghiệm-bài tập
Trang 4• Java là ngôn ngữ mạnh, có nghĩa là tối thiểu hóa được lỗi và khi có lỗi thì chúng có thể được quản lý
• Lỗi có 2 loại:
– Lỗi lúc biên dịch (compile-time error-lỗi cú pháp) – Lỗi lúc thực thi (run-time error- giải thuật sai, không dự đoán được tình huống).
• Exception= runtime-error
• Thí dụ: thực hiện phép chia mà mẫu số là 0
4 4/7/2018 http://sites.google.com/site/tranlectures
Trang 5• Là 1 kiểu lỗi đặc biệt, xảy ra trong thời gian thực thi khối lệnh và có thể gây ngừng đột ngột chương trình
• Các lỗi thường gây nên biệt lệ:
– Tràn bộ nhớ
– Lỗi cấp phát tài nguyên
– Không tìm thấy file
Trang 6Mục đích của việc xử lý
• Giảm thiểu việc kết thúc bất thường của hệ thống và của chương trình
• Ví dụ: khi đang thao tác trên 1 tập tin nếu gặp lỗi mà không xử lý và chương trình kết thúc đột ngột thì file sẽ không được đóng và có thể dẫn đến hư file và các nguồn tài nguyên sẽ không được giải phóng
4/7/2018 http://sites.google.com/site/tranlectures 6
Trang 7Java API Exception Hierachy
Trang 8Cấu trúc các class quản lý lỗi của Java
• Exception : lớp nền của phân cấp exception.
• RuntimeException : Lớp nền của nhiều lớp trong java.lang.exceptions.
• ArithmaticException : Quản lý lỗi tóan học như chia cho 0.
• IllegalArgumentException : Lỗi sai đối số.
• ArrayIndexOutOfBoundsException: Lỗi sai chỉ số của mảng
• NullPointerException : Lỗi đã truy xuất 1 đối tượng chưa khởi tạo
• SecurityException : Lỗi không được quyền truy cập.
• ClassNotFoundException : Lỗi không thể nạp 1 lớp vì không có lớp này
8 4/7/2018 http://sites.google.com/site/tranlectures
Trang 9Cấu trúc các class quản lý lỗi của Java(tt)
• NumberFormatException : Lỗi chuyển String ->float.
• ArithmaticException : Quản lý lỗi tóan học như chia cho 0.
• IOException : Lớp nền của IO exception.
• EOFException : Lỗi cố truy xuất dữ liệu mà file đã hết
• IllegalAccessException : Lỗi truy xuất đến 1class bị cấm.
• NoSuchMethodException : Lỗi không có method đã đặc tả
Trang 10Quá trình xử lý lỗi
• Xác định loại lỗi và đoạn lệnh xảy ra lỗi
• Xác định cơ chế bắt lỗi
• Xác định vị trí đoạn lệnh cần viết để bắt lỗi
• Xác định thông báo sẽ hiển thị nếu lỗi xảy ra
• Viết đoạn lệnh xử lý lỗi
• Lưu, biên dịch và chạy chương trình
4/7/2018 http://sites.google.com/site/tranlectures 10