Bài giảng Công nghệ java - Chương 5: Quản lý lỗi và gom rác - Trần Quang Diệu

Cấu trúc các class quản lý lỗi của Java(tt)

NumberFormatException: Lỗi chuyển String ->float.

AWTException: Lỗi Abstract Windowing Toolkit

ArithmaticException: Quản lý lỗi tóan học như chia cho 0.

IOException : Lớp nền của IO exception.

FileNotFoundException: Lỗi không có file đã đặc tả

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ả

InterruptedException: luồng bị ngắt

Quá 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

 

ppt29 trang | Chia sẻ: trungkhoi17 | Lượt xem: 457 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Bài giảng Công nghệ java - Chương 5: Quản lý lỗi và gom rác - Trần Quang Diệu, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
1CÔNG NGHỆ JAVA CH5. QUẢN LÝ LỖI VÀ GOM RÁCQuang Dieu Tran PhD9/27/202119/27/2021Mụ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 Java29/27/2021Nội dung1- Exception là gì?2- Cấu trúc quản lý lỗi của Java3- Mô hình try catch finally 4- Sử dụng throws5- Tự định nghĩa exceptions6- Cơ chế gom rác7- Tóm tắt-trắc nghiệm-bài tập39/27/2021ExceptionJava 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-errorThí dụ: thực hiện phép chia mà mẫu số là 049/27/2021ExceptionLà 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ênKhông tìm thấy fileLỗi kết nối9/27/20215Mụ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.9/27/20216Java API Exception Hierachy9/27/20217Cấu trúc các class quản lý lỗi của JavaException: 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ảngNullPointerException: Lỗi đã truy xuất 1 đối tượng chưa khởi tạoSecurityException : 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 89/27/2021Cấu trúc các class quản lý lỗi của Java(tt)NumberFormatException: Lỗi chuyển String ->float.AWTException: Lỗi Abstract Windowing ToolkitArithmaticException: Quản lý lỗi tóan học như chia cho 0.IOException : Lớp nền của IO exception.FileNotFoundException: Lỗi không có file đã đặc tảEOFException: Lỗi cố truy xuất dữ liệu mà file đã hếtIllegalAccessException : Lỗi truy xuất đến 1class bị cấm.NoSuchMethodException: Lỗi không có method đã đặc tảInterruptedException: luồng bị ngắt99/27/2021Quá trình xử lý lỗiXác định loại lỗi và đoạn lệnh xảy ra lỗiXác định cơ chế bắt lỗiXác định vị trí đoạn lệnh cần viết để bắt lỗiXác định thông báo sẽ hiển thị nếu lỗi xảy raViết đoạn lệnh xử lý lỗiLưu, biên dịch và chạy chương trình9/27/202110Xử lý biệt lệ như thế nào?Khi 1 biệt lệ xảy ra thì một đối tượng tương ứng sẽ được tạo ra.Đối tượng sẽ được truyền tới phương thức nơi mà biệt lệ xảy ra.Đối tượng này chứa các thông tin chi tiết về biệt lệ, các thông tin này sẽ có thể được nhận và xử lý.Lớp “Throwable” của Java là lớp cha của tất cả các biệt lệ9/27/202111Biệt lệ9/27/202112Mô hình xử lý biệt lệCác mô hình dùng để xử lý biệt lệ:try-catch-finallyThrow / throws9/27/202113Try-catch-finallySử dụng khối try, catch, finally để bắt giữ các ngoại lệKhối lệnh có thể ném ngoại lệKhối lệnh sẽ thực hiện nếu ngoại lệ xảy raKhối lệnh sẽ thực hiện bất chấp ngoại lệ xảy ra hay không9/27/202114Try-catch-finally9/27/202115Try-catch-finallypublic static void method(String s) {try { String s =“mot”; System.out.println(Integer.parseInt(s));} catch (NumberFormatException e) { System.out.println("wrong fomat");}finally{ System.out.println(“String s = ”+s);}}9/27/202116Throw và ThrowsTóan tử throw cho phép chỉ thị 1 exception đã xẩy ra. Kết quả là 1 đối tượng của 1 lớp dẫn xuất của lớp Throwable.Tình huống: method X() gọi method Y(), Y() thực thi gây ra 1 exception mà không được quản lý, exception này lan về cho phương thức gọi là X() . Nếu trong X() cũng không quản lý lỗi  Lỗi truyền về cho nơi đã gọi X() Cách giải quyết: a) Trong Y() có quản lý lỗi; b) Trong X() có có cấu trúc trycatch để quản lý lỗi.179/27/2021Throw và ThrowsCác biệt lệ được chặn bởi sự trợ giúp của từ khóa throw.Throw giúp chỉ ra biệt lệ vừa xảy ra.Toán hạng của throw là một đối tượng của 1 lớp mà lớp này được dẫn xuất từ Throwabletry{if (flag < 0){ throw new MyException( ) ; // user-defined }}9/27/202118Throw và ThrowsLớp Exception thực thi giao diện Throwable và cung cấp các tính năng hữu dụng để phân phối các biệt lệ.Một lớp con của lớp Exception là một biệt lệ mới có thể bắt giữ độc lập các Throwable khác nhau.9/27/202119Throw và ThrowsCú pháp sinh 1 Exception trong hàm ReturnType Method () throws ExceptionClass { if () throw ExceptionClass(“Message”); else { } }209/27/2021Throw và ThrowsMột phương thức đơn có thể được chặn bởi nhiều biệt lệ.public class Example {public void exceptionExample( ) throws ExException, LookupException {try{ // statements }catch(ExException exmp){ . }catch(LookupException lkpex){ . } }}9/27/202121Dọn rácJava cung cấp cơ chế gom rác tự động Garbage collection mà người lập trình không cần phải quan tâm xử lý rác.Đối tượng khi không còn tham chiếu nào tới nó nữa  gom rác.9/27/202122Cơ chế gom rácHiện thực bằng heap động (xem lại chương 1).Dù có thủ công gọi trình gom rác bằng System.gc() cũng không bảo đảm việc gom rác được thực thi ngay lập tức.Có thể thủ công tắt trình gom rác bằng chỉ thị java –noasyncgc File.class nhưng có thể phải trả giá là thiếu bộ nhớ do số đối tượng sinh ra trong chương trình khó tiên liệu  Hiệu suất chương trình kém.239/27/2021Cơ chế gom rác- finalize() methodJava cung cấp phương thức finalize() họat động như 1 Destructor của C++ để hủy các quá trình trước khi qúa trình trả điều khiển về cho hệ điều hành.Chú ý: Chỉ có đối tượng mới bị gom rác chứ tham khảo đến đối tượng không bị gom.Cú pháp: protected void finalize() throws Throwable249/27/2021Dọn rác: nulling a referenceCách đầu tiên để dọn rác là set tham chiếu của đối tượng thành nullGarbage collection sẽ làm việc sau câu lệnh này9/27/202125Ví dụ9/27/202126Kết quảTotal JVM memory: 5177344Before Memory = 4974672After Memory = 4728504After GC Memory = 50458649/27/202127Xử lý trước khi gom rácfinally() methods:Giải phóng tài nguyên cấp phát trước khi gom rác đối tượng.Không nên overridden lại phương thức này vì bạn không biết chắc chắn lúc nào hàm hủy sẽ được gọi.9/27/202128Tóm tắt-trắc nghiệm-bài tậpCó hai lọai lỗi: Lỗi lúc biên dịch và lỗi khi thực thi.Lỗi biên dịch là lỗi Lỗi lúc thực thi còn gọi là ..Nếu không quản lý Exception, chương trình sẽ ngắt đột ngột và điều khiển được trả về cho ..Hòan tòan có thể bẫy được các ..Quản lý exception cho phép xử lý lỗi đúng lúv (true/false)5 từ khóa được dùng để bẫy lỗi : ..Từ khóa throws cho phép dùng đối với các exception mà 1 hàm có thể xử lý (true/false)Từ khóa throw chỉ thị rằng 1 exception đã xẩy ra (true/false)Từ khóa finally chỉ thị nơi bắt đầu 1 khối phát biểu không phụ thuộc vào 1 lỗi có xẩy ra hay không (true./false)Ta có thể tự tạo ra 1 Exception class (true/false)System.gc() sẽ yêu cầu hệ thống ..299/27/2021

Các file đính kèm theo tài liệu này:

  • pptbai_giang_cong_nghe_java_chuong_5_quan_ly_loi_va_gom_rac_tra.ppt