Cách sử dụng khối finally ...6 Sử dụng khối finally nơi ngoại lệ không xảy ra ...6 Sử dụng khối finally nơi ngoại lệ xảy ra nhưng không xử lý ...6 Sử dụng khối finally nơi ngoại lệ xảy r
Trang 1BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC KINH TẾ-KỸ THUẬT CÔNG NGHIỆP
KHOA CÔNG NGHỆ THÔNG TIN
- -BÀI TẬP LỚN MÔN: Công nghệ Java Giảng viên hướng dẫn : ThS Vũ Văn Đốc
- Vũ Thị Thu Hương - Trưởng nhóm
- Phạm Văn Tài - Thành viên
- Lương Quang Dũng - Thành viên
- Trần Ngọc Huy - Thành viên
- Trần Minh Thiện - Thành viên
Trang 2MỤC LỤC
1 Exception là gì? 3
2 Exception Handling là gì? 3
3 Mô hình xử lý ngoại lệ 3
4 Các khối chứa nhiều Catch 4
5 Khối Finally 5
a Tại sao phải sử dụng khối finally? 6
b Cách sử dụng khối finally 6
Sử dụng khối finally nơi ngoại lệ không xảy ra 6
Sử dụng khối finally nơi ngoại lệ xảy ra nhưng không xử lý 6
Sử dụng khối finally nơi ngoại lệ xảy ra và được xử lý 7
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 8
Trang 3Bà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
2 Exception Handling là gì?
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ác kiểu của ngoại lệ
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ệ
Trang 4Hình 1.1 : Mô hình xử lý ngoại
lệ 4 Các khối chứa nhiều Catch
- 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
Trang 5- 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
trong
-finally
khai
lệnh
khối lệnh
Trang 6Hình 1.2: Khối Finally
a Tại sao phải sử dụng 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, …
b Cách sử dụng khối finally
Sử dụng khối finally nơi ngoại lệ không xảy ra
Sử dụng khối finally nơi ngoại lệ xảy ra nhưng không xử lý
Trang 7 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.
Trang 86 Ngoại lệ với lệnh throw
- Từ khoá throw được sử dụng để ném ra một ngoại lệ cụ thể
- 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)
VD: Throw ra ngoại lệ nhưng không xử lý.
VD: Throw ra ngoại lệ nhưng có xử lý.
Trang 9- 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
- Chỉ có ngoại lệ checked mới được khai báo, bởi vì:
+ Ngoại lệ unchecked: nằm trong sự kiểm soát của bạn
+ Error: nằm ngoài sự kiểm soát của bạn
- Lợi ích của throws
+ 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:
Trang 10TH1: Xử lý ngoại lệ với try/catch
TH2: Xử lý ngoại lệ với throws
VD1: Ngoại lệ không xảy ra
VD2: Ngoại lệ xảy ra