 |
|
Xử lý lỗi ngoại lệ |
|
Để triển khai chương trình Slide Show một cách
chuyên nghiệp, bạn cần chú ý việc xử lý lỗi. Bạn rất
dễ phát hiện lỗi lúc biên dịch (static error,
compile-time error) và chỉnh sửa nhanh chóng. Nhưng
việc phát hiện lỗi và xử lý lỗi trong lúc chạy
chương trình (run-time error) thì khó hơn, đòi hỏi
nhiều kinh nghiệm. |
|
Lỗi lúc chạy có thể là lỗi chia cho không (zero),
lỗi truy xuất phần tử mảng vượt giới hạn, lỗi khi mở
tập tin, lỗi truy xuất cơ sở dữ liệu không hợp
lệ,... Nếu bạn không bẫy được lỗi lúc chạy, để hệ
thống hiển thị thông báo lỗi, người dùng không hiểu
được thông báo lỗi đó, sẽ đánh giá thấp chương trình
của bạn, cho rằng chương trình không xử lý được hết
các tình huống xảy ra. Tệ hơn, chương trình bị lỗi
lúc chạy có thể kết thúc đột ngột do một số tài
nguyên chương trình sử dụng chưa trả lại cho hệ
thống, dẫn đến tình trạng bộ nhớ bị cạn kiệt (memory
leakage). |
|
May mắn thay, các ngôn ngữ lập trình như C++, Java,
C#, VB.NET, Delphi đều có các kỹ thuật để xử lý lỗi
lúc chạy chương trình. Ta dùng các kỹ thuật xử lý
lỗi để xử lý các tình huống ngoại lệ khi hàm/phương
thức không thể hoàn thành hoặc để xử lý các tình
huống khi hàm/phương thức không thể điều khiển trực
tiếp các ngoại lệ. Trong các dự án phần mếm lớn, ta
rất cần kiểm soát lỗi theo một quy ước thống nhất. |
|
Trong Java, để bẫy lỗi, ta dùng cú pháp sau: |
try
{
//câu lệnh có thể gây lỗi
}
catch(exceptiontype e)
{
//xử lý các lỗi
} |
|
Bạn nên đặt phần mã có thể gây ra lỗi bên trong câu
lệnh try. Một câu lệnh try có thể có nhiều câu lệnh
catch, tùy thuộc vào nhu cầu bẫy lỗi của bạn. Java
cung cấp sẵn lớp Exception và nhiều lớp con của
Exception diễn đạt các lỗi lúc chạy thường gặp như:
ClassNotFoundException, ArithmeticException,... Bạn
lưu ý, trình biên dịch Java không cho phép để câu
lệnh catch(Exception e) trước các câu lệnh catch
khác. Điều này hợp lý vì nếu làm như vậy thì các câu
lệnh catch sau catch(Exception e) sẽ không bao giờ
bẫy được lỗi vì tất cả các lỗi ngoại lệ đều thuộc về
lớp Exception. |
|
LÊ TRỌNG NHÂN (NIIT Faculty) |
|
Đầu
trang |
|