... không xửlý
tr c tiếp ngoạilệ mà lại ném lại ngoạilệ
đó cho nơi kh cxử lý.
catch (IOException e) {
throw e;
}
•
Chú ý: Trong trường hợp trên, phương
th c chứa catch phải bắt ngoạilệ ho c ... bằng c ch dùng
ngoại lệ cho ví dụ ở phần đầu bài.
21
Hai loại ngoại lệ
•
Ngoại lệ unchecked
• Là ccngoạilệ không bắt bu c phải đư c
kiểm tra.
•
Gồm RuntimeException, Error và cc lớp
con c a ... truyền ngoại lệ
C( )
B()
A()
main()
B()
A()
main()
C( ) tung ngoại lệ
Nếu C( ) gặp lỗi và tung ra ngoạilệ nhưng trong C( ) lại không xửlý
ngoại lệ này, thì chỉ c n một nơi c thể xửlý chính là...
... Hiểu đư c m c đích c a vi cxửlýngoại lệ
Hiểu đư ccc kiểu ngoạilệ kh c nhau trong Java
Mô tả mô hình xửlýngoại lệ
Hiểu đư ccc khối lệnh chứa nhiều catch
Mô tả c ch sử dụng cc khối ... lệ. Cc câu lệnh trong khối
‘try’ chặn ngoạilệc n khối ‘catch’ xửlýngoại lệ.
Cc khối chứa nhiều catch c thể đư c sử dụng để xửlýcc kiểu ngoạilệ kh c nhau
theo c ch kh c nhau.
Từ ... ‘ExException’ và ‘LookupException’. Hàm xửlýngoạilệ cho cc phương th c
này nên khai báo cc khối ‘catch’ để c thể xửlý tất cccngoạilệ mà cc phương th c
chặn.
Lớp ‘Exception’ th c thi...
... lệ xảy ra.
4. Sử dụng c u lệnh catch nhiều lần
Nhiều khối ‘catch’ xửlýcc loại ngoạilệ kh c
nhau một c ch đ c lập
Bài tập ví dụ:ExcDemo4
6. Sử dụng c u lệnh Thows
C cngoạilệ ... đoạn mã c khả năng gây ra ngoại lệ
}
catch(Exception e1)
{
// Nếu cc lệnh trong khối ‘try’ tạo ra ngoạilệc loại e1, thì th c
hiện / /xử lýngoạilệ nếu không chuyển xuống khối 'catch' ... theo
}
catch(Exception e2)
{
// Nếu cc lệnh trong khối ‘try’ tạo ra ngoạilệc loại e2, thì th c
hiện / /xử lýngoạilệ nếu không chuyển xuống khối 'catch' tiếp theo
}
catch(Exception...
... l c nào c ng c th c thi, bt chp c ngoi l xy ra hay
không.
Hình minh ha s th c hin c a cc khi ‘try’, ‘catch’ và ‘finally’.
try block
catch blockfinally block
finally block
No Exception ... phát sinh trong khi try thì cc mnh catch s b
b qua, trong trng hp mt trongcc câu lnh bên trong khi try gây ra mt ngoi l thì,
thì java s b qua cc câu lnh c n li trong khi ... Throwable, ta c th to ra lp
ngoi l riêng bng c ch m rng lp Throwable
I. M c ích c a vi c x lý ngoi l
Mt chng trình nên cc ch x lý ngoi l thích hp. Nu không, chng trình...
... lệ. Cc câu lệnh trong khối
‘try’ chặn ngoạilệc n khối ‘catch’ xửlýngoại lệ.
Cc khối chứa nhiều catch c thể đư c sử dụng để xửlýcc kiểu ngoạilệ kh c nhau
theo c ch kh c nhau.
Từ ... nắm đư ccc nội dung sau:
Định nghĩa một ngoạilệ (exception)
Hiểu đư c m c đích c a vi cxửlýngoại lệ
Hiểu đư ccc kiểu ngoạilệ kh c nhau trong Java
Mô tả mô hình xửlýngoại lệ
... Vi cxửlýngoạilệ cho phép bạn kết hợp tất c tiến trình xửlý lỗi trong một nơi. L c
đó đoạn mã c a bạn sẽ rõ ràng hơn.
Java sử dụng cc khối ‘try’ và ‘catch’ để xửlýccngoại lệ. Cc câu...
... ‘ExException’ và ‘LookupException’. Hàm xửlýngoạilệ cho cc
phương th c này nên khai báo cc khối ‘catch’ để c thể xửlý tất cccngoạilệ mà
c c phương th c chặn.
27
Chương 7 Xửlýngoại ... lệ. Cc câu lệnh trong
khối ‘try’ chặn ngoạilệc n khối ‘catch’ xửlýngoại lệ.
Cc khối chứa nhiều catch c thể đư c sử dụng để xửlýcc kiểu ngoạilệ kh c
nhau theo c ch kh c nhau.
... đư ccc kiểu ngoạilệ kh c nhau trong Java
Mô tả mô hình xửlýngoạilệ
Hiểu đư ccc khối lệnh chứa nhiều catch
Mô tả c ch sử dụng cc khối ‘try’, ‘catch’ và ‘finally’
Giải thích c ch...
... kế xửlýcc
ngoại lệ mà chương trình phát sinh. Xửlýngoạilệ đư c th c thi trongtrongc u lệnh
catch. Một c ch lý tưởng thì nếu một ngoạilệ đư c bắt và đư cxử lý, thì chương
trình c ... không th c hiện vi cxửlýngoại lệ,
ngoại lệ sẽ đư cxửlý sớm bởi CLR, điều này d
ẫn đến chương trình c a chúng ta sẽ
kết th c.
Một trình xửlýngoạilệ là một khối lệnh chương trình đư c thiết ... thi chương trình đến cc lệnh tiếp sau khối catch.
Ở đây không c vi c quay lại cu c gọi hàm trư ctrong stack. Ngoạilệ bây giờ đư cxử
lý, không c vấn đề gì xảy ra, và chương trình tiếp tục...
... đối tượng ngoạilệ
Cho đến l c này thì chúng ta c th
ể sử dụng tốt ccngoạilệc ng như c ch xử
lý kh c ph cccngoạilệ này. Trong phần này chúng ta sẽ tiến hành vi c tìm hiểu cc
đối tượng ... t c là với bất cngoạilệ
nào c ng đư c. Tuy nhiên chúng ta c thể tạo ra khối catch x c định để xửlý chỉ mộ
t
vài ccngoạilệ chứ không phải toàn bộ ngoại lệ, dựa trên kiểu c a ngoạilệ ... lệ. Thu c tính HelpLink cung c p một liên kết để trợ
giúp cho cc tập tin liên quan đến ccngoại lệ. Đây là thu c tính chỉ đ c. Thu c tính
StackTrace c ng là thu c tính chỉ đ c
và đư c thiết...
... nă
ng đ c biệt c n thiết
trong ngoạilệ mà chúng ta tạo ra. Chúng ta dễ dàng tạo ra ccngoạilệ riêng, hay c n gọi
là ccngoạilệ tùy chọn (custom exception), điều bắt bu c với ccngoạilệ này ... tĩnh c lỗi.
Bảng 13.1 : Ccngoạilệ thường xuất hiện
Tạo riêng ccngoạilệ
CLR cung c p những kiểu dữ liệu ngoạilệc bản, trong ví dụ trư c chúng ta đã tạo một
vài cc kiểu ngoạilệ ... nhúng ngoạilệ ban đầu vào bên trong
ngoại lệ mới để phương th c gọi
c thể hiểu đư c lai lịch và nguồn g c của ngoại lệ. Thu c tính InnerException c a
ngoại lệ mới cho phép truy c p ngoại lệ...
... 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 ... 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
Nội dung
u
Tình huống phát sinh ngoại lệ
u C ch xửlýngoạilệ làm vi ctrong C#
u C u lệnh try-catch-finally
VD ... 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.
VD c try-catch-finally
Luôn th c thi dù c hay không cngoại lệ!
Xử lýngoại lệ
HD:...