Thứ Hai, 20 tháng 1, 2014

Bài giảng Exception và gom rác

5
Ôn tập

Lớp abstract và interface khác nhau ở
chỗ: 1 lớp chỉ có thể thừa kế từ 1 lớp
kah1c nhưng lại có thể là 1 hiện thực của
nhiều interface.

Gói là 1 khai báo cho 1 tập các lớp, các
interface và các gói cấp thấp hơn.

Gói là 1 thư mục có tên trùng với tên gói.
6
4.2- Exception là gì?

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

Khi 1 exception xẩy ra, chương trình kết thúc
đột ngột và điều khiển được trả lại cho OS 
Cần phải quản lý được các tình huống này.
7
4.3- Cấu trúc các class quản lý lỗi của Java
Object
Throwable
ExceptionError
AWTError
ThreadDead

SQLException
ClassNotFoundException

RuntimeException
ArithmaticException
NullPointerException
NumberFormatException
Khi 1 error/exception xẩy ra, ta
nói rằng nó bị “thrown” (throw)

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

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
9
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
10
4.4- Mô hình try catch finally

Có thể thử thực thi 1 tác vụ (try), nếu xuất 1
lỗi thì bẫy lỗi (catch) để xử lý tình huống lỗi
và cuối cùng thực thi tiếp (finally).

Cú pháp
( Không có các cặp {}  Lỗi: ‘{‘ expected )
try {….}
catch (Exception e) { …}
finally { …}

try block
catch block
finally block
e?
no
11
Mô hình try catch finally(tt)
import java.io.*; // TryCatchDemo.java
class TryCatchDemo
{ static double Divide ( double a, double b) { return a/b;}
public static void main(String args[])
{ try { System.out.println(Divide(5,0));}
catch( Exception e)
{ System.out.println("System exception:"+ e.toString());}
finally
{ System.out.println("I tried to divide 5 by 0");}
System.out.println("End!");
}
}
Infinity
I tried to divide 5 by 0
End!
12
import java.io.*; // ArrayCatch.java
class ArrayCatch
{ static String S;
static void Out() { System.out.println(S);}
public static void main(String args[])
{ try { Out(); }
catch (NullPointerException e)
{ System.out.println("Exception occured:");}
finally { int a[]= { 1,2,3,4,5};
try { System.out.println(a[7]);}
catch(ArrayIndexOutOfBoundsException e2)
{ System.err.println("Out of bounds");}
}
}
}
null
Out of bounds
13
4.5- Sử dụng throw

Tóan tử throw cho phép chỉ thị 1 exception đã
xẩy ra. Kết qủa 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 try…catch để quản
lý lỗi.
14
Sử dụng throw/throws

Cú pháp sinh 1 Exception trong hàm
ReturnType Method (…) throws ExceptionClass
{ if (…) throw ExceptionClass(“Message”);
else { …… }
}

Không có nhận xét nào:

Đăng nhận xét