▫ Phòng ngừa bằng các điều kiện trước và sau khi gọi mỗi phần chương trình: điều gì phải đúng trước khi gọi chương trình, điều gì xảy ra sau khi chương trình thực hiện xong. ▫ Dùng chú[r]
(1)Bài 8
(2)Nội dung
1. Khái niệm
2. Phòng ngừa sai sót liệu
3. Xử lý lỗi
(3)1
(4)phòng ngừa
Defensive Programming
Defensive driving
(5)Lập trình phòng ngừa
Defensive programming
▪ Ý tưởng chính: chương trình (CTC) nhận liệu vào bị lỗi chạy thơng, chương trình khác nhận liệu đầu vào bị lỗi
▪ Lập trình phịng ngừa cách tự bảo vệ chương trình khỏi
▫ các ảnh hưởng tiêu cực liệu không hợp lệ
▫ các rủi ro đến từ kiện tưởng "không bao giờ" xảy
(6)Các lỗi
phòng ngừa
▪ Lỗi liên quan đến phần cứng
▫ Đảm bảo lỗi buffer overflows hay divide by zero kiểm
soát
▪ Lỗi liên quan đến chương trình
▫ Đảm bảo giá trị gán cho biến nằm vùng kiểm soát
▫ Do not trust anything; verify everything
▪ Lỗi liên quan đến người dùng
▫ Đừng cho người dùng thực thao tác theo dẫn, kiểm tra thao tác họ
▪ Lỗi liên quan đến kỹ thuật phòng ngừa!
▫ Mã nguồn cài đặt kỹ thuật phịng ngừa có khả gây lỗi,
(7)Các giai đoạn
lập trình phòng ngừa
▪ Lập kế hoạch thực công việc:
▫ Dành thời gian để kiểm tra gỡ rối chương trình cẩn thận : hồn
thành chương trình trước ngày so với hạn nộp
▪ Thiết kế chương trình:
▫ Thiết kế giải thuật trước viết ngơn ngữ lập trình cụ thể
▪ Giữ vững cấu trúc chương trình:
▫ Viết kiểm thử phần chương trình: phần chương trình dùng để làm
▫ Viết kiểm thử mối liên kết phần chương trình: quy trình nghiệp vụ
▫ Phòng ngừa điều kiện trước sau gọi phần chương trình: điều phải trước gọi chương trình, điều xảy sau khi chương trình thực xong
(8)Kiểm tra cái gì,
khi nào?
▪ Testing: vấn đề làm chương trình khơng chạy
▪ Kiểm tra theo cấu trúc chương trình: Kiểm tra việc thực nhiệm vụ đặt cho phần chương trình
▫ Ví dụ: điều xảy với chương trình lề văn bản, hàm ReadWord() bị lỗi ?
▪ Nếu chương trình khơng có tham số đầu vào, mà thực thi nhiệm vụ sinh kết khơng cần kiểm tra nhiều
Hầu hết chương trình khơng
▫ Ví dụ: điều xảy với chương trình lề văn bản,
▸ Khơng nhập đầu vào ?
▸ Đầu vào xâu/file chứa từ hay chữ quy
(9)Kiểm soát lỗi
có thể xảy
▪ Error handling: xử lý lỗi mà ta dự kiến xảy
▪ Tùy theo tình cụ thể, ta trả về: ▫ một giá trị trung lập
▫ thay đoạn liệu hợp lệ
▫ trả giá trị lần trước
▫ thay giá trị hợp lệ gần
▫ ghi vết cảnh báo vào tệp
▫ trả mã lỗi
▫ gọi thủ tục hay đối tượng xử lý
(10)Chắc chắn hay
chính xác?
▪ Chắc chắn: chương trình ln chạy thơng, kể có lỗi
▪ Chính xác: chương trình khơng gặp lại lỗi
▪ Ví dụ: Lỗi thị trình xử lý văn bản: thay đổi nội dung văn bản, phần dịng văn phía hình bị thị sai Khi người dùng phải làm gì?
▫ Tắt chương trình
▫ Nhấn PgUp PgDn, hình làm
Ưu tiên tính chắn thay tính xác: