Professional Documents
Culture Documents
Nhóm 11
Nhóm 11
Lớp : DHTI13A1HN
2
Bài 3: Xử lý ngoại lệ
Exception Handling trong java hay xử lý ngoại lệ trong java là một cơ chế mạnh mẽ để
xử lý các lỗi runtime để có thể duy trì luồng bình thường của ứng dụng.
1. Exception là gì?
Theo từ điển: Exception (ngoại lệ) là một tình trạng bất thường.
Trong java, ngoại lệ là một sự kiện làm gián đoạn luồng bình thường của chương trình.
Nó là một đối tượng được ném ra tại runtime.
Exception Handling (xử lý ngoại lệ): là một cơ chế xử lý các lỗi runtime như
ClassNotFound, IO, SQL, Remote, vv
Có hai loại ngoại lệ chính là: checked và unchecked. Còn Sun Microsystem nói rằng
có ba loại ngoại lệ:
Checked Exception
Unchecked Exception
Error
3. Mô hình xử lý ngoại lệ
3
Hình 1.1 : Mô hình xử lý ngoại lệ
- Nếu phải thực hiện các tác vụ khác nhau mà ở đó có thể xảy ra các ngoại lệ khác
nhau, hãy sử dụng đa khối lệnh catch.
VD:
- Vào một thời điểm chỉ xảy ra một ngoại lệ và tại một thời điểm chỉ có một khối
Catch được thực thi.
4
- Tất cả các khối catch phải được sắp xếp từ cụ thể nhất đến chung nhất, tức là phải
khai báo khối lệnh catch để xử lý lỗi ArithmeticException trước khi khai báo catch để
xử lý lỗi Exception.
VD:
- Chương trình trên bị lỗi tại compile-time là vì khi có ngoại lệ xảy ra thì các khối lệnh
catch (ArithmeticException e) và catch (ArrayIndexOutOfBoundsException e) không
bao giờ được thực thi, do khối catch (Exception e) đã bắt tất cả các ngoại lệ rồi.
5. Khối Finally
- Khối lệnh finally được sử dụng để thực thi các lệnh quan trọng như đóng kết nối,
đóng các stream,…
- Khối lệnh finally luôn được thực thi cho dù có ngoại lệ xảy ra hay không hoặc gặp
lệnh return
trong khối try.
- Khối lệnh
finally được
khai báo sau khối
lệnh try hoặc sau
khối lệnh catch.
5
Hình 1.2: Khối Finally
- Khối finally có thể được sử dụng để chèn lệnh “cleanup” vào chương trình như việc
đóng file, đóng các kết nối, …
6
Sử dụng khối finally nơi ngoại lệ xảy ra và được xử lý
Sử dụng khối finally trong trường hợp trong khối lệnh try có lệnh return.
7
6. Ngoại lệ với lệnh throw
- Chúng ta có thể ném một trong hai ngoại lệ checked hoặc upchecked bằng từ khoá
throw. Từ khoá throw chủ yếu được sử dụng để ném ngoại lệ tuỳ chỉnh (ngoại lệ do
người dùng tự định nghĩa).
8
- Từ khoá Throws được sử dụng để khai báo một ngoại lệ. Nó thể hiện thông tin cho
lập trình viên rằng có thể xảy ra một ngoại lệ, vì vậy nó là tốt hơn cho các lập trình
viên để cung cấp các mã xử lý ngoại lệ để duy trì luồng bình thường của chương trình.
- Exception Handling chủ yếu được sử dụng để xử lý ngoại lệ checked. Nếu xảy ra bất
kỳ ngoại lệ unchecked như NullPointerException, đó là lỗi của lập trình viên mà anh ta
không thực hiện kiểm tra trước khi code được sử dụng.
+ Ngoại lệ checked có thể được ném ra ngoài và được xử lý ở một hàm khác.
+ Cung cấp thông tin cho caller của phương thức về các ngoại lê.
VD:
- Nếu bạn đang gọi một phương thức khai báo throws một ngoại lệ, bạn phải bắt hoặc
throws ngoại lệ đó.
9
TH1: Xử lý ngoại lệ với try/catch
10
11