Tải bản đầy đủ (.ppt) (18 trang)

SLIDE GIẢNG DẠY - NGÔN NGỮ LẬP TRÌNH JAVA - CHƯƠNG 4 - NGOẠI LỆ

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (229.25 KB, 18 trang )

LẬP TRÌNH JAVA

Chương 3

NGOẠI LỆ

GV: Võ Hoàng Phương Dung


Nội dung


Định nghĩa ngoại lệ (Exception)



Bắt giữ & xử lý ngoại lệ



Chuyển tiếp (Ném) ngoại lệ



Định nghĩa lớp Ngoại lệ mới

2/25


Định nghĩa ngoại lệ



Ngoại lệ (Exception): là sự kiện xuất hiện trong quá trình thực
thi của chương trình và gây phá vỡ dòng thực thi của chương
trình.



Ví dụ: đọc 1 file không tồn tại



Lớp Exception 

• Là lớp cha cho tất cả các lớp thể hiện ngoại lệ. 
• 2 phương thức thông dụng trong lớp Exception. 
toString(): Trả về một chuỗi mô tả về Ngoại lệ. 
 printStackTrace(): In ra thông tin chi tiết về Ngoại lệ,
như các method gây ra ngoại lệ, dòng code xảy ra ngoại
lệ. 


3/25


Định nghĩa ngoại lệ

4/25


Định nghĩa ngoại lệ









ArithmeticException: xảy ra khi Chương trình có
các lỗi đại số. VD: Chia cho 0. 
NumberFormatException: Xảy ra khi thực hiện
chuyển đổi chuỗi không hợp lệ sang kiểu số. 
NullPointerException: Xảy ra khi một đối tượng
chưa được khởi tạo mà đã truy cập đến thành phần
của đối tượng đó. 
ArrayIndexOutOfBoundException: Xảy ra khi truy
cập đến phần tử của mảng có chỉ số bé hơn không
hoặc hoặc lớn hơn kích thước của mảng. 
5/25


Bắt giữ & xử lý ngoại lệ


Cú pháp
try {
// Khối code gây ra ngoại lệ
}
catch(ExceptionType name) {
// Khối code xử lý ngoại lệ

}

catch(ExceptionType name) {…}
finally{
// Khối code giải phóng tài nguyên
}
6/25


Bắt giữ & xử lý ngoại lệ


Khối try đi kèm ít nhất 1 khối catch hoặc finally



Có thể có nhiều khối catch sau 1 khối try



Khối finally luôn được thực hiện



Nhiều khối try … catch có thể lồng nhau

7/25


Bắt giữ & xử lý ngoại lệ

public class MyException {
public static void main(String args[]){
calculate(9,0);
}
public static void calculate(int num, int i){
try{
System.out.println(num/i);
}catch(ArithmeticException e){
System.out.println("error");
}
finally{ System.out.println("finished");}
}
}
8/25


Bắt giữ & xử lý ngoại lệ

9/25


Chuyển tiếp ngoại lệ




Ngoại lệ được chuyển đến các phương thức gọi, cho đến khi
một bộ quản lý ngoại lệ được tìm thấy, hoặc kết thúc.
throw: Dùng để ném ra một ngoại lệ mà không xử lý trong
phương thức. 

throws: Dùng đế khai báo danh sách các ngoại lệ mà phương
thức có thể ném ra

10/25


Chuyển tiếp ngoại lệ
public class MyException {
public static void main(String args[]){
try{
calculate(9,0);
}catch(ArithmeticException e){
System.out.println("error");
}finally{
System.out.println("finished");
}
}
public static void calculate(int num, int i){
if(i==0) throw new ArithmeticException();
else System.out.println(num/i);
}
}

11/25


Chuyển tiếp ngoại lệ
public class MyException {
public static void main(String args[]){
try{

calculate(9,0);
}catch(ArithmeticException e){
System.out.println("error");
}finally{
System.out.println("finished");
}
}
public static void calculate(int num, int i) throws
ArithmeticException{
System.out.println(num/i);
}
}

12/25


Chuyển tiếp ngoại lệ
void writeList() throws IOException,
ArrayIndexOutOfBoundsException {
PrintWriter out = new PrintWriter(new
FileWriter("OutFile.txt"));
for (int i = 0; i < SIZE; i++) {
out.println("Value at: " + i + " = "
+ vector.elementAt(i)); }
out.close();
}

13/25



Các loại Exception


Có 2 loại ngoại lệ

• Cần kiểm tra: trình biên dịch luôn kiểm tra xem
chúng ta có viết code xử lý các ngoại lệ này không


Ví dụ: IOException

• Không cần kiểm tra


Ngoại lệ runtime (Runtime exception)

14/25


Các loại Exception
Ví dụ về ngoại lệ cần được kiểm tra
InputStreamReader reader;
BufferedReader bufReader;
reader = new InputStreamReader(System.in);
bufReader = new BufferedReader(reader);
try {
String s = bufReader.readLine();
}
catch (IOException e) {
...

}


15/25


Định nghĩa lớp ngoại lệ


Có thể tạo 1 lớp xử lý ngoai lệ riêng bằng cách thừa kế từ lớp
Exception hoặc từ lớp con của Exception



Cú pháp
class MyException extends Exception 

... 
}

16/25


Đinh nghĩa lớp ngoại lệ
Ví dụ
public class MyException extends Exception
{
public MyException ()
{
}

public MyException (String msg)
{
super (msg);
}
}


17/25


Thảo luận


Ưu điểm của phương pháp xử lý ngoại lệ là gì?



Khi nào nên sử dụng phương pháp

• Bắt và xử lý ngoại lệ tại chỗ: try … catch
• Ném ngoại lệ lên các lớp trên: throw,throws

18/25



×