Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 20 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
20
Dung lượng
296,8 KB
Nội dung
Xửlýngoại lệ
HD: ThSNguyễnHà Giang
Khoa CNTT -Hutech
Nội dung
u
Tình huống phát sinh ngoại lệ
u Cách xửlýngoạilệ làm việc trong C#
u Câu lệnh try-catch-finally
Tình huống
u
Nhữnglỗiphátsinhkhirutimecóthể
làmhưhạichươngtrình
u Cóthể khôngphảilỗilậptrình
u VD: mộtsốtìnhhuốngviếtdữliệuvào
file
v Đĩabịđầy
v Lỗiphầncứng
v File bị thay đổithànhchỉđọc
v Khôngthể truycập, truyvấnCSDL
v …
Cách xửlý trước đây
u Hầuhếtcácbướccókhả năngthấtbại
u Khóxác địnhchínhxáclỗitừnhữngthông
tin trả về củahàmthư viện
u Đoạncode phảithựchiệnrồimớibiếtlỗi!
GET A FILENAME
OPEN THE FILE
IF THERE IS NO ERROR OPENING THE FILE
READ SOME DATA
IF THERE IS NO ERROR READING THE DATA
PROCESS THE DATA
WRITE THE DATA
IF THERE IS NO ERROR WRITING THE DATA
CLOSE THE FILE
IF THERE IS NO ERROR CLOSING FILE
RETURN
Cách xửlý Exception
u Đoạncode xử lýngắngọn, dễđọc
u Logic chươngtrìnhhợplýhơn, những đoạnnghi
ngờ cólỗinằmtrongvùngTry
u Cho phépxửlýtìnhhuốnglỗirõràngvà đơngiản!
TRYTO DO THESE THINGS:
GET A FILENAME
OPEN THE FILE
READ SOME DATA
PROCESS THE DATA
WRITE THE DATA
CLOSE THE FILE
RETURN
IF ERROR OPENING THE FILE THEN
IF ERROR READING THE DATA THEN
IF ERROR WRITING THE DATA THEN
IF ERROR CLOSING THE FILE THEN
Các đối tượng Exception
u
TrongC#, khiruntime error xuấthiện
v CLR sẽ xác địnhlỗivàphátsinhta đối
tượngException
v ĐốitượngException này đượcnémtrở lại
stack chờ chomộtphươngthứcbắtlỗi
đó.
v NếuException nàykhông đượcchương
trình“catch” thìCRL sẽ in rathông điệp
lỗi
Mô hình gọi –xử lý Exception
CLR Runtime
The Main( )
method
First Method
Exception
Thrown Here
Method
Calls
Travel
Down
Exceptions
Passed
Up
Sử dụng try-catch
u
Dùngtry-catch để xử lýngoạilệ
v Đặtcode cókhả năngdẫnđếnngoạilệ
vàokhối“try”
v Cungcấpcáckhối“catch” theosau“try”
v Cóthể cungcấptấtcảcatch chocáclỗi
nếumuốnxửlý, bằngcáchsửdụng
cáclớpexception thíchhợp
v Nếukhôngcungcấp“catch” chomột
ngoạilệ, thìexception này đượclan
truyềnlêntrên.
Cúpháptry-catch
try
{
RiskyBussiness();
}
catch (SomeException e )
{
// Handle code
}
Code có khả năng
dẫn đến lỗi
Tham số exception
được catch
Đoạn xửlý với tình
huống có lỗi
Khối try
u
Baogồmcácphần
v Từ khóatry
v Theo saukhối“{…}”
v Khối“{…}” bắtbuộcphảicó, khácvới
“{…}” trongif hay for
u Bêntrongkhốitry
v Đặtbấtcứcâulệnhnàocókhả năngphát
sinhrangoạilệ
[...]... như sau catch (Exception-class [var1]) { // xử lýngoạilệ 1 } catch (Exception-class [var2]) { // xử lýngoạilệ 2 } Ví d try-catch Chương trình bị terminate Chương trình kết thúc bình thường S u d ng Finally Khi m t exception đư c ném ra v Lu ng th c thi s nh y vào kh i catch x v M t s đo n code gi i phóng tài nguyên có th b b qua Open File Read Data Close File v lý nó // ngoại lệ được phát sinh //... lệ được phát sinh // đoạn code này bị bỏ qua, dù file chưa đóng Kh i try-catch có ph n option là finally v Luôn luôn đư c g i v S d ng đ d n d p các tài nguyên đang n m gi VD có try-catch-finally Luôn thực thi dù có hay không có ngoại lệ! L nh throw u Cho phép ném ra m t ngo i l v Cú pháp: throw exception-object Phát sinh ra ngoại lệ L p Exception u Có 2 lo i ngo i l v Ngo i l phát sinh b i chương trình... VD truy xu t file Tóm t t u Exception làm cho chương trình ch t ch hơn Tránh terminate chương trình đ t ng t vì nh ng l i runtime u T p các l p Exception đa d ng, bao hàm các v n đ phát sinh lúc runtime u L p Exception là l p cơ s x lý ngo i l trong NET u D dàng đ nh nghĩa l p ngo i l , và phát sinh ngo i l trong chương trình cho các l p . Xử lý ngoại lệ HD: ThS Nguyễn Hà Giang Khoa CNTT -Hutech Nội dung u Tình huống phát sinh ngoại lệ u Cách xử lý ngoại lệ làm việc trong C# u Câu lệnh try-catch-finally Tình huống u Nhữnglỗiphátsinhkhirutimecóthể làmhưhạichươngtrình u. try-catch-finally Luôn thực thi dù có hay không có ngoại lệ! Lệnh throw u Cho phépnémramộtngoạilệ v Cúpháp: throw exception-object Phát sinh ra ngoại lệ Lớp Exception u Có2loạingoạilệ v Ngoạilệphátsinhbởichươngtrình v. Cúphápkhốicatch như sau catch (Exception-class [var1]) { // xử lý ngoại lệ 1 } catch (Exception-class [var2]) { // xử lý ngoại lệ 2 } Ví dụ try-catch Chương trình bị terminate Chương trình kết thúc