Bài giảng Lập trình Java - Bài 2: Xử lý ngoại lệ

Ngoại lệ là gì?

• Có những lỗi chỉ khi chạy chương mới xuất hiện và

chương trình đang chạy lập tức ngừng lại và xuất hiện

thông báo lỗi – đó chính là ngoại lệ (exception).

• Ví dụ: Chương trình chia 2 số. Nếu ta cho mẫu số =0

thì phát sinh lỗi và đó được coi là 1 ngoại lệ.

Ngoại lệ ‘unchecked’:

• Là các ngoại lệ không cần phải ‘catch’ khi viết

• Là các class Error, RuntimeException và các

lớp con của chúng

Ngoại lệ ‘checked’:

• Là các ngoại lệ phải được ‘catch’ khi viết mã

• Là các class còn lại

pdf 30 trang kimcuc 9260
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lập trình Java - Bài 2: Xử lý ngoại lệ", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Lập trình Java - Bài 2: Xử lý ngoại lệ

Bài giảng Lập trình Java - Bài 2: Xử lý ngoại lệ
BÀI 2 
Xử lý ngoại lệ 
Nhắc lại bài cũ 
Package và Interface 
Sử dụng package 
Các từ khóa public, protected, private 
Các package chuẩn của Java 
Khái niệm inteface 
Thực thi interface 
Kế thừa interface 
2 
Nội dung bài học 
3 
1. Sử dụng khối trycatch để xử lý ngoại lệ 
2. Sử dụng final trong khối trycatch 
3. Sử dụng từ khóa throws và throw 
1. Sử dụng khối try catch để xử lý ngoại lệ 
Trong phần này có các nội dung: 
1.1. Cơ bản về ngoại lệ (Exception) 
1.2. Sử dụng try catch để xử lý ngoại lệ 
 - try có nhiều catch 
 - khối try lồng nhau 
 4 
1.1 Cơ bản về ngoại lệ 
Ngoại lệ là gì? 
• Có những lỗi chỉ khi chạy chương mới xuất hiện và 
chương trình đang chạy lập tức ngừng lại và xuất hiện 
thông báo lỗi – đó chính là ngoại lệ (exception). 
• Ví dụ: Chương trình chia 2 số. Nếu ta cho mẫu số =0 
thì phát sinh lỗi và đó được coi là 1 ngoại lệ. 
5 
1.2. Sử dụng khối try catch để xử lý ngoại lệ 
6 
• Class Throwable xử lý lỗi và ngoại lệ (Error, Exception). 
• Tất cả các class dưới đây đều nằm trong gói java.lang, ngoại trừ 
class IOException là nằm trong gói java.io 
ClassNotFoundException 
CloneNotSupportedException 
IllegalAccessException 
InstantialtionException 
IOException * 
RuntimeException 
LinkageError 
ThreadDeath 
VitualMachineError 
ArithmeticException 
IllegalArgumentException 
IndexOutOfBoundsException 
NullPointerException 
More class  
Exception 
Error 
Throwable 
1.1 Cơ bản về ngoại lệ 
• Có nhiều ngoại lệ là lớp con của lớp Exception 
• RuntimeErrorException là lớp con của lớp Exception 
• RuntimeErrorException là các ngoại lệ chỉ xảy khi chạy 
chương trình. 
• Người lập trình có thể tự tạo các class kế thừa từ class 
Exception. 
Class Exception 
• Chỉ những lỗi nghiêm trọng và không dự đoán trước được 
như VirtualMachineError, LinkageError, ThreadDead 
• Các ngoại lệ Error ít được xử lý 
Class Error 
7 
1.2. Sử dụng khối try catch để xử lý ngoại lệ 
8 
Ngoại lệ ‘unchecked’: 
• Là các ngoại lệ không cần phải ‘catch’ khi viết 
mã 
• Là các class Error, RuntimeException và các 
lớp con của chúng 
Ngoại lệ ‘checked’: 
• Là các ngoại lệ phải được ‘catch’ khi viết mã 
• Là các class còn lại 
9 
Throwable 
Error 
Unchecked 
Error 
Exception 
Runtime 
Exception 
Unchecked 
Exceptions 
Checked 
Exceptions 
1.2. Sử dụng khối try catch để xử lý ngoại lệ 
10 
Một số ngoại lệ ‘checked’: 
• ClassNotFoundException 
• IOException 
• FileNotFoundException 
• EOFException 
Một số ngoại lệ ‘unchecked’ 
• ArithmeticException 
• IllegalArgumentException 
• IndexOutOfBoundException 
• NullPointerException 
• InputMismatchException 
1.2. Sử dụng khối try catch để xử lý ngoại lệ 
Sử dụng từ khóa try và catch 
11 
1.2. Sử dụng khối try catch để xử lý ngoại lệ 
try{ 
 //Khối lệnh 
}catch(){ 
 //Khối lệnh xử lý ngoại lệ 
} 
Ví dụ: Nếu không dùng try catch, xét ví dụ sau: 
c=a/b; 
System.out.println(“Sau phep chia !”);(*) 
12 
Câu lệnh (*) sẽ không được thực hiện nếu mẫu số b=0, 
chương trình lập tức ngừng lại và xuất hiện thông báo 
lỗi của hệ thống 
1.2. Sử dụng khối try catch để xử lý ngoại lệ 
Ví dụ: 
try{ 
 c=a/b; 
}catch(Exception e){ 
 System.out.println(“Có lỗi “+e); 
} 
System.out.println(“Sau phép chia !”); (*) 
13 
Câu lệnh (*) sẽ luôn được thực hiện dù mẫu số b=0 
hay b!=0. 
1.2. Sử dụng khối try catch để xử lý ngoại lệ 
• Trong một đoạn code có thể có nhiều ngoại lệ xảy ra 
nên ta sẽ dùng nhiều catch để xử lý các ngoại lệ đó. 
• Các lệnh catch thường được viết theo thứ tự xuất hiện 
của ngoại lệ. 
• Chú ý: Tất cả các ngoại lệ sẽ là lớp con của class 
Exception nên catch cuối cùng sẽ là Exception. 
Dùng try có nhiều catch 
14 
1.2. Sử dụng khối try catch để xử lý ngoại lệ 
Dùng try có nhiều catch 
15 
1.2. Sử dụng khối try catch để xử lý ngoại lệ 
16 
Nếu xuất hiện ngoại lệ phép chia cho 0 thì lệnh (1) sẽ xử lý, còn các ngoại lệ 
khác sẽ được xử lý bởi lệnh (2). Nếu đặt (2) đổi chỗ cho (1) thì (2) sẽ xử lý luôn 
ngoại lệ chia cho 0 vì như thế không cần (1) nữa. Vì thế không thể thay đổi vị 
trí giữa lệnh (1) và lệnh (2) 
1.2. Sử dụng khối try catch để xử lý ngoại lệ 
Khối try lồng nhau 
17 
1.2. Sử dụng khối try catch để xử lý ngoại lệ 
Trong khối finally sẽ chứa một khối mã sẽ thực hiện 
sau khối try/catch. Khối finally sẽ được thực hiện dù 
ngoại lệ có xuất hiện hay không. Tuy nhiên, mỗi try sẽ 
yêu cầu có ít nhất 1 catch hoặc 1 finally. 
18 
1.2. Sử dụng khối try catch để xử lý ngoại lệ 
try catch finally 
try catch 
try finally 
2. Sử dụng từ khóa final trong try catch 
static void proA(){ 
 try{ 
 System.out.println(“Trong phương thức proA"); 
 throw new RuntimeException("Demo"); (1) 
 } 
 finally{ 
 System.out.println(“Trong khối finally của proA”); 
 } 
} 
19 
static void proB(){ 
 try{ 
 System.out.println(“Trong phương thức proB"); 
 return; 
 } 
 finally{ 
 System.out.println(“Trong khối finally của proB”); 
 } 
} 
20 
2. Sử dụng từ khóa final trong try catch 
static void proC(){ 
 try{ 
 System.out.println(“Trong phương thức proC");
 } 
 finally{ 
 System.out.println(“Trong khối finally của proC”); 
 } 
} 
2. Sử dụng từ khóa final trong try catch 
Nhận xét: 
• ở procA() có tạo ra ngoại lệ mà vẫn chạy khối finally 
• ở procB() có return mà vẫn chạy khối finally. 
3. Sử dụng từ khóa throws và throw 
Từ khóa throws 
Từ khóa throws được sử dụng trong method dùng để 
đề xuất các ngoại lệ có thể xảy ra trong method đó. Có 
những method sử dụng một số lệnh mà các lệnh đó có 
thể xảy ra ngoại lệ ‘checked’ nên chúng ta bắt buộc phải 
xử lý ngoại lệ đó. Ví dụ khi xử lý các lệnh thao tác với 
file, phải xử lý ngoại lệ ‘checked’ FileNotFoundException. 
Tất cả các ngoại lệ được khai báo bởi throws đều phải 
được xử lý, nếu không có đủ sẽ bị thông báo lỗi. 
22 
3. Sử dụng từ khóa throws và throw 
Ví dụ 1: 
23 
3. Sử dụng từ khóa throws và throw 
Ví dụ 1 (tiếp): 
24 
3. Sử dụng từ khóa throws và throw 
Ví dụ 2: Dùng cách throws trong phương thức main 
25 
3. Sử dụng từ khóa throws và throw 
 Thông thường các exception sẽ được ‘ném’ ra bởi hệ 
thống Java runtime. Tuy vậy ta vẫn có thể lập trình để 
‘ném’ ra các ngoại lệ khi gặp một tình huống nào đó 
trong khi lập trình. 
 Trong một phương thức có thể throw nhiều ngoại lệ. 
 Có 2 cách để ‘ném’ (throw) ra các ngoại lệ: 
• Dùng toán tử new 
• Đưa 1 tham số vào mệnh đề catch. 
 Ví dụ: 
if (check==0) 
 throw new NullPointerException(); 
26 Bài 1: Lập trình Java 
3. Sử dụng từ khóa throws và throw 
27 
3. Sử dụng từ khóa throws và throw 
28 
Chúng ta có thể tự viết class xử lý ngoại lệ của riêng 
mình bằng cách kế thừa class Exception của Java: 
3. Sử dụng từ khóa throws và throw 
29 
Tổng kết bài học 
 Ngoại lệ là các lỗi chỉ xảy ra khi chạy chương trình 
 Khi gặp ngoại lệ thì chương trình lập tức dừng lại 
 Dùng try catch để xử lý ngoại lệ theo ý đồ của 
người lập trình. 
 Dùng try có nhiều catch 
 Dùng try lồng nhau 
 Sử dụng try-catch-finally 
 Sử dụng từ khóa throws 
 Sử dụng từ khóa throw 
30 

File đính kèm:

  • pdfbai_giang_lap_trinh_java_bai_2_xu_ly_ngoai_le.pdf