Exception – Garbage Collection

38
1 Exception – Garbage Collection Chương 6- Exception-Gom Rác Slide 1/41 LỖI LÚC THỰC THI và QUÁ TRÌNH GOM RÁC

description

LỖI LÚC THỰC THI và QUÁ TRÌNH GOM RÁC. Exception – Garbage Collection . ÔN TẬP. Lớp trừu tượng- abstract class- là sản phẩm của qúa trình khái quát hóa qúa cao. Lớp trừu tượng là lớp có hành vi trừu tượng. Cú pháp khai báo lớp trừu tượng abstract class A { .... - PowerPoint PPT Presentation

Transcript of Exception – Garbage Collection

Page 1: Exception  –  Garbage  Collection

1Chương 6- Exception-Gom Rác

Exception – Garbage Collection

Slide 1/41

LỖI LÚC THỰC THI và QUÁ TRÌNH GOM RÁC

Page 2: Exception  –  Garbage  Collection

VC&

BB

22Chương 6- Exception-Gom Rác

ÔN TẬP

Lớp trừu tượng- abstract class- là sản phẩm của qúa trình khái quát hóa qúa cao.

Lớp trừu tượng là lớp có hành vi trừu tượng.Cú pháp khai báo lớp trừu tượngabstract class A{ .... abstract [modifier] Type Method(args)}

Slide 2/41

public, protected, friendly

Page 3: Exception  –  Garbage  Collection

VC&

BB

33Chương 6- Exception-Gom Rác

Ôn tậpLớp cụ thể (concrete class) là lớp chỉ chứa các

hành vi cụ thể (có code).Lớp con của một lớp trừu tượng mà chưa cụ thể

hóa một hành vi trừu tượng thừa kế từ lớp cha thì lớp con này cùng là lớp trừu tượng.

Slide 3/41

Page 4: Exception  –  Garbage  Collection

VC&

BB

44Chương 6- Exception-Gom Rác

Mục tiêu

Giải thích được lỗi cú pháp và lỗi thực thi chương trình.

Giải thích được mô hình đối tượng Exception của Java.

Giải thích được cú pháp bẫy lỗi bằng try...catch... finally.

Sử dụng được throw và throws trong code,Tự định nghĩa được Exception.Giải thích được cơ chế gom rác của Java.

Slide 4/41

Page 5: Exception  –  Garbage  Collection

VC&

BB

55Chương 6- Exception-Gom Rác

Nội dung

- Các loại lỗi của chương trình- Cấu trúc các lớp quản lý lỗi của Java.- Bẫy lỗi bằng try...catch...finally- Lan truyền lỗi- Xuất Exception- Tự định nghĩa Exception- Cơ chế gom rác

Slide 5/41

Page 6: Exception  –  Garbage  Collection

VC&

BB

66

6.1- Các loại lỗi của chương trình

Exception-Gom RácSlide 6/41

Bài toán Code

Chương trình

Hiệnthực Compile

Run

Syntax error

NoSyntax error

Correct resultEND

BEGIN

Run-time error( Exception )

Wrong result

?

Page 7: Exception  –  Garbage  Collection

VC&

BB

77Chương 6- Exception-Gom Rác

Các loại lỗi của chương trình

Compile-time error = Syntax errorRun-time error = Exception, tình huống bất bình

thường đã xẩy ra trong khi chương trình thực thi.

Khi có Exception: Có thể là máy bị treo (halt). Chương trình ngắt đột ngột, điều khiển trả về cho OS,

OS thu hồi bộ nhớ của chương trình ( đuổi ra ngoài ).Cần có cơ chế điều khiển tình huống này.

Slide 7/41

Page 8: Exception  –  Garbage  Collection

VC&

BB

88Chương 6- Exception-Gom Rác

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

Slide 8/41

Object

Throwable

ExceptionError

AWTError

ThreadDead

SQLException

ClassNotFoundException

RuntimeException

ArithmeticException

NullPointerException

NumberFormatExceptionKhi 1 error/exception xẩy ra, ta nói rằng nó bị “thrown” (throw) …

Page 9: Exception  –  Garbage  Collection

VC&

BB

99Chương 6- Exception-Gom Rác

Lớp Throwable

Các lớp Exception đều được dẫn ra từ lớp này.Chứa các hành vi giúp truy xuất thông tin về lỗi

như: nội dung mô tả lỗi : getMesage(), toString() nội dung stack lúc gây lỗi: getStackTrace(),

printStackTrace(), ....

Slide 9/41

Page 10: Exception  –  Garbage  Collection

VC&

BB

1010Chương 6- Exception-Gom Rác

Một số lớp quản lý lỗi của Javaclass Giải thích

Exception Lớp nền của các run-time error

RuntimeException Lớp nền của nhiều lớp run-time error

ArithmeticException Lỗi do thực thi một phép toán

IllegalArgumentException Lỗi sai đối số của hàm

ArrayIndexOutOfBoundsException Lỗi do chỉ số ngoài tầm của mảng

NullPointerException Lỗi do truy xuất một đối tượng mà chưa khởi tạo

SecurityException Lỗi do truy cập bị cấm

ClassNotFoundException Lỗi do không tìm thấy file.class

Slide 10/41

Page 11: Exception  –  Garbage  Collection

VC&

BB

1111Chương 6- Exception-Gom Rác

Một số lớp quản lý lỗi của Java

Lớp Giải thíchNumberFormatException Lỗi do không đúng dạng số

IOException Lỗi xuất nhập

FileNotFoundException Lỗi do không tìm thấy file

EOFException Lỗi do cố truy cập nội dung 1 file khi đã ở cuối file

IllegalAccessException Lỗi do truy cập 1 class bị cấm

NoSuchMethodException Lỗi do viết sai tên hành vi

InterruptedException Lỗi do ngắt ngang 1 luồng lệnh đang được thực thi

Slide 11/41

Page 12: Exception  –  Garbage  Collection

VC&

BB

1212Chương 6- Exception-Gom Rác

Bẫy lỗi bằng try...catch...finally

Bẫy lỗi bằng cú pháp: try...catch ...finally ...

Slide 12/41

try { < các lệnh thử làm> }catch ( Exception1 e1) { < code xử lý lỗi> }catch ( Exception2 e2) { < code xử lý lỗi> }finally { <các lệnh sẽ làm dù có lỗi hay không> }// Buộc phải có {...} dù chỉ có 1 phát biểu

Page 13: Exception  –  Garbage  Collection

VC&

BB

1313Chương 6- Exception-Gom Rác

Bẫy lỗi bằng try...catch...finally

Dự đoán lỗi: Tại một thời điểm, developer có thể dự đoán

chính xác các lỗi có thể xẩy ra. Thí dụ: Nhập dữ liệu từ bàn phím vào 1 số thông qua hộp thoại, có 2 tình huống: người dùng không nhập (user cancel), người dùng nhập chữ.

Có thể tổng quát hoá các lỗi nhờ lớp cha (Exception) để quản lý chung.

Slide 13/41

Page 14: Exception  –  Garbage  Collection

VC&

BB

1414Chương 6- Exception-Gom Rác

Bẫy lỗi- Thí dụ

Slide 14/41

Page 15: Exception  –  Garbage  Collection

VC&

BB

1515Chương 6- Exception-Gom Rác

Bẫy lỗi – Thí dụ

Slide 15/41

Page 16: Exception  –  Garbage  Collection

VC&

BB

1616Chương 6- Exception-Gom Rác

Bẫy lỗi mức tổng quát

Slide 16/41

Dùng đối tượng mức tổng quát ( lớp Exception). Xem lại hình vẽ về cấu trúc quản

lý lỗi của Java trong các slide trước

Page 17: Exception  –  Garbage  Collection

VC&

BB

1717Chương 6- Exception-Gom Rác

Bẫy lỗi tham khảo mảng ngoài tầm chỉ số

Slide 17/41

Mảng 5 phần tử mà lại truy cập a[10]

Bẫy lỗi mức tổng quát

Page 18: Exception  –  Garbage  Collection

VC&

BB

1818Chương 6- Exception-Gom Rác

6.4- Lan truyền lỗi

Exception propagationLỗi lan truyền từ trong ra cho đến khi gặp bẫy lỗi

hoặc tới main và ứng dụng bị ngưng.

Slide 18/41

A()

B()

C()

D() Exception

Chiều gọi hàm

Chiều lan truyền lỗi

catch(...)

Page 19: Exception  –  Garbage  Collection

VC&

BB

1919Chương 6- Exception-Gom Rác

Lan truyền lỗi- Thí dụ

Slide 19/41

main(...)

output(...)

getPos(...)

Page 20: Exception  –  Garbage  Collection

VC&

BB

2020Chương 6- Exception-Gom Rác

Chặn lan truyền lỗi- Thí dụ

Slide 20/41

Bẫy lỗi

và chương trình tiếp tục

Page 21: Exception  –  Garbage  Collection

VC&

BB

2121Chương 6- Exception-Gom Rác

Gọi hành vi có xuất lỗi trong code

Slide 21/41

Hành vi exec(String) của lớp RunTime có throw một exception.Khi sử dụng một tác vụ có xuất exception trong khai báo mộtmethod, trình biên dịck sẽ nhắc nhở chúng ta rằng cần phải bẫy lỗi này trong code

Chương trình gọi Calculator của MS Windows trong Java

Page 22: Exception  –  Garbage  Collection

VC&

BB

2222Chương 6- Exception-Gom Rác

6.5- Xuất Exception

Exception thường do JVM xuất ra. Code chương trình có thể chủ động tạo ra 1 đối tượng

exception bằng từ khóa throw Cú pháp : throw new <Exception name(“Message”)> Phương thức có xuất Exception thì phải dùng throws

khai báo loại Exception mà nó xuất, ở đầu phương thức

Slide 22/41

Page 23: Exception  –  Garbage  Collection

VC&

BB

2323Chương 6- Exception-Gom Rác

Xuất Exception

Slide 23/41

Page 24: Exception  –  Garbage  Collection

VC&

BB

2424Chương 6- Exception-Gom Rác

6.6- Tự định nghĩa Exception

Người lập trình có thể tự định nghĩa một loại Exception dựa trên các loại Exception đã có.

Phương pháp khai báo một user-defined exception: Tên lớp exception Tên lớp cha Thông báo lỗi.

Slide 24/41

Page 25: Exception  –  Garbage  Collection

VC&

BB

2525Chương 6- Exception-Gom Rác

Tự định nghĩa Exception

Slide 25/41

Page 26: Exception  –  Garbage  Collection

VC&

BB

2626Chương 6- Exception-Gom Rác

Cơ chế gom rác

Rác: Đối tượng không còn được tham khảo đến.

Garbage Collector: Trình gom rác, là một luồng được thực thi khi “máy rảnh” hoặc là khi có yêu cầu cấp bộ nhớ mà bộ nhớ “không còn đủ”.

Application chủ động gọi trình gom rác bằng: System.gc(); Tuy nhiên, GC có độ ưu tiên kém, nếu JVM rảnh thì GC mới thực thi.

Có thể thông qua môi trường thực thi(runtime environment) để gom rác tức thì

Slide 26/41

Page 27: Exception  –  Garbage  Collection

VC&

BB

2727Chương 6- Exception-Gom Rác

Gom rác: Đối tượng và tham khảo đến đối tượng Java 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 Throwable

Slide 27/41

obj 1000

1000

A obj; obj = new A(...);

1000

1000

obj = null;

rác

1000

Page 28: Exception  –  Garbage  Collection

VC&

BB

2828Chương 6- Exception-Gom Rác

Cơ chế gom rác- Nhận diện rác

Slide 28/41

{ ... Object a = new Object(); Object b= a; a= null; }Đối tượng vừa tạo đã là rác chưa?

{ ..... Object a = new Object(); a= null; }

Đối tượng vừa tạo đã là rác chưa?

{ ..... Object a = new Object(); // đối tượng 1 a= new Object (); // đối tượng 2}

Đối tượng 1đã là rác chưa?

Page 29: Exception  –  Garbage  Collection

VC&

BB

2929Chương 6- Exception-Gom Rác

Thí dụ: Truy xuất môi trường thực thi và Chủ động gom rác

Slide 29/41

Page 30: Exception  –  Garbage  Collection

VC&

BB

3030Chương 6- Exception-Gom Rác

Lớp RunTime Mô tả môi trừơng của máy ảo. Cho phép gọi 1 ứng dụng.

Slide 30/41

Page 31: Exception  –  Garbage  Collection

VC&

BB

3131Chương 6- Exception-Gom Rác

Lớp RunTime – Gọi ứng dụng của OS

Slide 31/41

Page 32: Exception  –  Garbage  Collection

VC&

BB

3232Chương 6- Exception-Gom Rác

Truy cập lớp System

Slide 32/41

Ba đối tượng thành phần:in : Bàn phímout, err : màn hìnhCac1 nhóm hành vi:- Truy uất môi trường (env)- Truy xxuất thuộc tính (property)- Truy xuất thời gian (Time)

Page 33: Exception  –  Garbage  Collection

VC&

BB

3333Chương 6- Exception-Gom Rác

Thí dụ

Slide 33/41

Page 34: Exception  –  Garbage  Collection

VC&

BB

3434Chương 6- Exception-Gom Rác

Tóm tắt

2 loại error: syntax error, run-time error.run-time error được gọi là exception.Khi một exception, JVM xuất động một object

(chứa mô tả về exception này). Lớp trên cùng của các error là lớp Throwable

( lớp cho các đối tượng xuất động của JVM)Có rất nhiều Exception để trong các gói thư viện

của Java.

Slide 34/41

Page 35: Exception  –  Garbage  Collection

VC&

BB

3535Chương 6- Exception-Gom Rác

Tóm tắtBẫy lỗi bằng try ... catch... finallyNếu hành vi chứa một code có thể gây lỗi, chỉ

thị bằng throwsTrong code của hành vi, có thể xuất một

exception bằng throw new ExceptionClass (“Msg”);Tự định nghĩa một Exception là khai báo một lớp

kế thừa một Exception đã có.

Slide 35/41

Page 36: Exception  –  Garbage  Collection

VC&

BB

3636Chương 6- Exception-Gom Rác

Tóm tắt

Java cung cấp sẵn một garbage collector. Chủ động gọi GC bằng System.gc() hoặc thông qua một

đối tượng RunTime. class RunTime chứa thông tin về môi trường thức thi

Java app. Thời gian trong Java là một số long theo đơn vị mili giây

kể từ 1-1-1970. Sử dụng java.util.Date để thao tác với dữ liệu thời gian. Có thể thông qua đối tượng System để lấy thời gian hiện

hành của máy (theo mili, nano second).

Slide 36/41

Page 37: Exception  –  Garbage  Collection

VC&

BB

3737Chương 6- Exception-Gom Rác

Bài tập

Tạo lớp mô tả và thao tác trên mảng các số int có quản lý lỗi truy cập. Các tác vụ: các constructor: chuẩn, cấp phát mảng chứa tối đa MaxN phần tử, sao chép mảng đã có, Nhập, lấy phần tử thứ i, xuất, sắp xếp tăng, sắp xếp giảm, chèn trị x vào vị trí thứ i,...

Tạo lớp mô tả và thao tác trên ma trận các số int có quản lý lỗi truy cập.

Slide 37/41

Page 38: Exception  –  Garbage  Collection

VC&

BB

3838Chương 6- Exception-Gom Rác

Cám ơn

Slide 38/41