Lập trình java - Bài 10: Xử lý ngoại lệ

Lập trình java - Bài 10: Xử lý ngoại lệ

 Xử lý ngoại lệ trong lập trình java

Nội dung bài học:
1. Sử dụng khối try…catch để xử lý ngoại lệ
2. Sử dụng final trong khối try…catch
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
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ệ.

Cơ bản về ngoại lệ (Exception) trong lập trình java

1.2. Sử dụng khối try… catch để xử lý ngoại lệ

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

Sử dụng khối try… catch để xử lý ngoại lệ trong lập trình java

1.1 Cơ bản về ngoại lệ

Cơ bản về ngoại lệ trong lập trình java

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
Cơ bản về ngoại lệ trong lập trình java

Cơ bản về ngoại lệ trong lập trình java

Sử dụng từ khóa try và catch

Sử dụng từ khóa try và catch trong lập trình java

Ví dụ: Nếu không dùng try… catch, xét ví dụ sau:
c=a/b;
System.out.println(“Sau phep chia !”);(*)
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
Ví dụ:
try{
c=a/b;
}catch(Exception e){
System.out.println(“Có lỗi “+e);
}
System.out.println(“Sau phép chia !”); (*)
Câu lệnh (*) sẽ luôn được thực hiện dù mẫu số b=0 hay b!=0.

Dùng try có nhiều catch

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

Dùng try có nhiều catch trong lập trình java

Dùng try có nhiều catch trong lập trình java


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)
Khối try lồng nhau

Khối try lồng nhau trong lập trình java

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.
Khối try lồng nhau trong lập trình java

Sử dụng từ khóa final trong try...catch


Sử dụng từ khóa final trong try...catch trong lập trình java


Sử dụng từ khóa final trong try...catch trong lập trình java

Sử dụng từ khóa final trong try...catch trong lập trình java

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.

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.
Ví dụ 1:
Sử dụng từ khóa throws trong lập trình java

Ví dụ 1 (tiếp):
Sử dụng từ khóa throws trong lập trình java

Ví dụ 2: Dùng cách throws trong phương thức main

Dùng cách throws trong phương thức main trong lập trình java

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();

Dùng toán tử new trong lập trình java

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:

viết class xử lý ngoại lệ trong lập trình java

viết class xử lý ngoại lệ trong lập trình java

Tổng kết nội dung 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

















ĐĂNG NHẬN XÉT

Previous Post Next Post