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