Tải bản đầy đủ (.pdf) (20 trang)

Xử lý ngoại lệ - ThS Nguyễn Hà Giang doc

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (296.8 KB, 20 trang )

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 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ệ
Khối catch
u
Đặtmộthay nhiềungaysaukhốitry
v Khôngcólệnhnàochengiữahaikhối
catch củamộtkhốitry
u 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
bình thường
Sử dụng Finally
u
Khimộtexception đượcnémra
v Luồngthựcthisẽnhảyvàokhốicatch xử lýnó.
v Mộtsốđoạncode giảiphóngtàinguyêncóthể bị
bỏ qua
v Khốitry-catch cóphầnoption là finally
v Luônluôn đượcgọi
v Sửdụng để dọndẹpcáctàinguyên đangnắm
giữ
Open File
Read Data // ngoại lệ được phát sinh
Close File // đoạn code này bị bỏ qua, dù file chưa đóng
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é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 NgoạilệđượctạobởiCLR
u LớpSystem.Exceptionlàlớpcơsởcho
tấtcảlớptrongC#
u 2lớpkếthừatừlớpnày:
v ApplicationException:thườnglàmlớpcơ
bảncholớpngoạilệphátsinhtừứng
dụng
v SystemException:doCLRphátsinh
Lớp Exception (2)
MộtsốlớpException thườngdùng
v System.OutOfMemoryException
v System.NullReferenceException
v Syste.InvalidCastException
v Syste.ArrayTypeMismatchException
v System.IndexOutOfRangeException
v System.ArithmeticException
v System.DevideByZeroException
v System.OverFlowException
Tự tạo lớp exception
VD truy xuất file
Tóm tắt
u
Exceptionlàmchochươngtrìnhchặt
chẽ hơn.Tránhterminatechươngtrình

độtngộtvìnhữnglỗiruntime
u TậpcáclớpException đadạng,bao
hàmcácvấnđề phátsinhlúcruntime
u LớpExceptionlàlớpcơsởchocáclớp
xửlýngoạilệtrong.NET
u Dễ dàng địnhnghĩalớpngoạilệ,và
phátsinhngoạilệtrongchươngtrình

×