Please enable JavaScript.
Coggle requires JavaScript to display documents.
CHƯƠNG 10: NGOẠI LỆ VÀ XỬ LÍ NGOẠI LỆ - Coggle Diagram
CHƯƠNG 10: NGOẠI LỆ VÀ XỬ LÍ
NGOẠI LỆ
NGOẠI LỆ
Là 1 sự kiện xảy ra trong quá trình thực thi chương trình,
phá vỡ luồng bình thường
là 1 lỗi đặc biệt
Khi xảy ra,nếu không xử lý thì kết thúc ngay và trả quyền
cho hệ điều hành
Cách xử lý:
viết mã xử lý tại nơi phát sinh lỗi
++ nhưng làm rối,không nhất thiết
truyền trạng thái lên mức trên
++ vẫn khó hiểu,dễ nhầm
Bắt và xử lý
ngoại lệ
Mô hình xử lý
Hướng đối tượng
Đóng gói các điều kiện không
mong đợi trong 1 đtg
khi xảy ra ngoại lệ, đối tượng tương ứng với ngoại lệ được
tạo ra chứa ttin về ngoại lệ
cung cấp cơ chế hiệu quả
tác biệt luồng điều khiển bất thường và bthg
ngoại lệ cần được xử lý tại nơi sinh ra
hoặc ủy nhiện cho pthuc gọi đến
Xử lý trong java
Khối try/catch
try {...}: khối lệnh có khả năng gây ra ngoại lệ
catch(){...}: bắt và xử lý
Cây phân cấp ngoại lệ
CAO NHẤT: throwable
1 biến kiểu string để lưu ttin chi tiết
về ngoại lệ đã xảy ra
new throwable(s) tạo ngoại lệ với ttin nle là s
string getmessage(): lấy ttin về ngoại lệ
void prinStacktrace: in ra tất cat ttin về ngoại lệ
ERROR
NGOẠI LỆ không thể kiểm tra vì
xảy ra ở nhiều phần ctr
không thể phục hồi
lớp con: threadeath, linkageError,virtualerrror(đuôi eror)
Exception(cao ngang error)
chứa ngoại lệ phải xử lý hoặc ủy nhiệm
tạo ra bằng cách kế thừa exception
rumtimeexxception tung ra trong qtr JVM
lớp con: đuôi exception,
khối try/catch lồng nhau
nhiều khối catch
exception1 phải là lớp con hoặc
ngang hàng với excep2
kiểu error ngang với excep
hoặc excep với con đuôi excep
Khối finally
đảm bảo thực hiện tất cả
các cvc cần khi có ngoại lệ xay ra
ỦY NHIỆM NGOẠI LỆ
2 CÁCH:
dùng try...catch
dùng throw: ủy nhiệm vị trí gọi nó
nếu pthuc có chứa câu lệnh tung ngoại lệ thì phần khai báo pthc phải khai báo là có tung ngoại lệ đó hoặc lớp cha của ngoại lệ đó
tại vị trí gọi pthuc có ủy nhiệm ngoại lệ:
hoặc là phải ủy nhiệm tiếp
hoặc là tại vị trí gọi phải bắt ngoại lệ ủy nhiệm
và xử lý ngay = try catch
pthuc ko cần khai báo sẽ tung ra runtimeexxception
1 pthcu có thể ủy nhiệm nhiều hơn 1ngoaij lệ