Professional Documents
Culture Documents
LẬP TRÌNH PYTHON CHƯƠNG 6
LẬP TRÌNH PYTHON CHƯƠNG 6
… những bước chập chững vào thế giới Khoa học dữ liệu … Trần Doãn Hiếu
LÀM VIỆC VỚI NGOẠI LỆ
Bài 6: Ngoại lệ và Tập tin
• Làm cho chương trình không chạy được (thông dịch) hoặc
không dịch được (biên dịch) hoặc chương trình chạy được
nhưng không cho kết quả như mong đợi
– Ngoại lệ
• Một chức năng nào đó không chạy được do chương trình không
xử lý hết các khả năng có thể xảy ra
… những bước chập chững vào thế giới Khoa học dữ liệu … Trần Doãn Hiếu
NGOẠI LỆ
• Lỗi chương trình trong Python
– Lỗi cú pháp (Syntax error)
Bài 6: Ngoại lệ và Tập tin
• Sai cú pháp, khiến chương trình thông dịch không dịch được
– Ngoại lệ (Exception)
• Xảy ra bất thường không như thiết kế
… những bước chập chững vào thế giới Khoa học dữ liệu … Trần Doãn Hiếu
NGOẠI LỆ
• Ví dụ lỗi cú pháp
Bài 6: Ngoại lệ và Tập tin
(Ví dụ 1-Chương 6)
… những bước chập chững vào thế giới Khoa học dữ liệu … Trần Doãn Hiếu
XỬ LÝ NGOẠI LỆ
• Đảm bảo giá trị nhập (x) phải là một số
Bài 6: Ngoại lệ và Tập tin
(Ví dụ 2-Chương 6)
… những bước chập chững vào thế giới Khoa học dữ liệu … Trần Doãn Hiếu
XỬ LÝ NGOẠI LỆ
• Đảm bảo giá trị nhập (y) phải là số khác 0 và thực
hiện phép chia 1/y
Bài 6: Ngoại lệ và Tập tin
(Ví dụ 3-Chương 6)
… những bước chập chững vào thế giới Khoa học dữ liệu … Trần Doãn Hiếu
XỬ LÝ NGOẠI LỆ
• Các thành phần của cấu trúc try except-else-finally
– try: đoạn mã có khả năng gây lỗi, khi lỗi xảy ra, khối này
sẽ bị dừng ở dòng gây lỗi
Bài 6: Ngoại lệ và Tập tin
… những bước chập chững vào thế giới Khoa học dữ liệu … Trần Doãn Hiếu
XỬ LÝ NGOẠI LỆ
• Chú ý:
– try chỉ có 1 khối duy nhất, phải viết đầu tiên
Bài 6: Ngoại lệ và Tập tin
– finally có thể có hay không, nếu có thì khối này phải viết
cuối cùng
– except có thể không viết, có một khối, hoặc nhiều khối
except (để xử lý nhiều tình huống lỗi khác nhau)
– except có thể xử lý một loại lỗi, nhiều loại lỗi hoặc tất cả
các loại lỗi
– Nếu không xử lý triệt để lỗi có thể “ném” trả lại lỗi này
bằng lệnh “raise”
– Có thể phát sinh một ngoại lệ bằng lệnh “raise ”
… những bước chập chững vào thế giới Khoa học dữ liệu … Trần Doãn Hiếu
XỬ LÝ NGOẠI LỆ
• Các thành phần của cấu trúc try ... except ...
Bài 6: Ngoại lệ và Tập tin
(Ví dụ 4-Chương 6)
… những bước chập chững vào thế giới Khoa học dữ liệu … Trần Doãn Hiếu
XỬ LÝ NGOẠI LỆ
Bài 6: Ngoại lệ và Tập tin
(Ví dụ 5-Chương 6)
… những bước chập chững vào thế giới Khoa học dữ liệu … Trần Doãn Hiếu
CÁC NGOẠI LỆ THƯỜNG GẶP
Ngoại lệ Lý do gây ra
AssertionError Xảy ra khi câu lệnh assert thất bại.
AttributeError Xảy ra khi gán thuộc tính hoặc tham chiếu thất bại.
EOFError Xảy ra khi hàm input () chạm vào điều kiện end-of-file.
Bài 6: Ngoại lệ và Tập tin
Xảy ra khi một số thực dấy phẩy động thực thi không thành
FloatingPointError
công
GeneratorExit Xảy ra khi phương thức close() của hàm generator được gọi.
ImportError Xảy ra khi không tìm thấy module được import.
Xảy ra khi một chỉ số trong chuỗi (sequence) nằm ngoài phạm
IndexError
vi.
Xảy ra khi không tìm thấy khóa ánh xạ (từ điển) trong tập hợp
KeyError
các khóa hiện có.
Xảy ra khi người dùng nhấn phím ngắt (thông thường là Ctrl-C
KeyboardInterrupt
hoặc Delete).
… những bước chập chững vào thế giới Khoa học dữ liệu … Trần Doãn Hiếu
CÁC NGOẠI LỆ THƯỜNG GẶP
Ngoại lệ Lý do gây ra
Xảy ra khi một operation hết bộ nhớ nhưng tình huống vẫn
MemoryError
có thể được sửa chữa (bằng cách xóa một số đối tượng).
Xảy ra khi không tìm thấy tên cục bộ hoặc toàn cầu của
NameError
Bài 6: Ngoại lệ và Tập tin
biến.
Xảy ra bằng các phương thức trừu tượng khi chúng yêu
NotImplementedError
cầu các lớp dẫn xuất ghi đè phương thức.
OSError Xảy ra khi một hàm trả về lỗi liên quan đến hệ thống
Xảy ra khi kết quả của phép toán số học quá lớn không thể
OverflowError
biểu diễn.
Xảy ra khi một proxy tham chiếu yếu sử dụng để truy cập
ReferenceError
một thuộc tính của tham chiếu sau khi thu thập rác.
Xảy ra khi phát hiện thấy lỗi không thuộc bất kỳ danh mục
RuntimeError
nào khác.
… những bước chập chững vào thế giới Khoa học dữ liệu … Trần Doãn Hiếu
CÁC NGOẠI LỆ THƯỜNG GẶP
Ngoại lệ Lý do gây ra
Xảy ra bằng phương thức next() của một vòng lặp để báo
StopIteration
hiệu rằng không có giá trị nào được trả về bởi iterator.
SyntaxError Xảy ra khi gặp lỗi cú pháp.
Bài 6: Ngoại lệ và Tập tin
… những bước chập chững vào thế giới Khoa học dữ liệu … Trần Doãn Hiếu
CÁC NGOẠI LỆ THƯỜNG GẶP
Ngoại lệ Lý do gây ra
Xảy ra khi tham chiếu tạo thành một biến cục bộ trong một
UnboundLocalError hàm hoặc phương thức, nhưng không có giá trị nào bị ràng
buộc với biến đó.
Bài 6: Ngoại lệ và Tập tin
… những bước chập chững vào thế giới Khoa học dữ liệu … Trần Doãn Hiếu
BÀI TẬP THỰC HÀNH
Bài 6: Ngoại lệ và Tập tin
… những bước chập chững vào thế giới Khoa học dữ liệu … Trần Doãn Hiếu
LÀM VIỆC VỚI TẬP TIN
Bài 6: Ngoại lệ và Tập tin
2. Đọc/ghi file
3. Đóng file
… những bước chập chững vào thế giới Khoa học dữ liệu … Trần Doãn Hiếu
MỞ VÀ ĐÓNG TẬP TIN
• Mở file:
– f = open(filename, mode)
• Các chế độ mở file hay sử dụng:
Bài 6: Ngoại lệ và Tập tin
… những bước chập chững vào thế giới Khoa học dữ liệu … Trần Doãn Hiếu
MỞ VÀ ĐÓNG TẬP TIN
Bài 6: Ngoại lệ và Tập tin
(Ví dụ 6-Chương 6)
… những bước chập chững vào thế giới Khoa học dữ liệu … Trần Doãn Hiếu
MỞ VÀ ĐÓNG TẬP TIN
• Mở và đóng tập tin sau khi sử dụng xong
Bài 6: Ngoại lệ và Tập tin
(Ví dụ 7-Chương 6)
… những bước chập chững vào thế giới Khoa học dữ liệu … Trần Doãn Hiếu
ĐỌC VÀ GHI TẬP TIN
• Đọc tập tin
– read(x): đọc x byte tiếp theo, nếu không viết x thì sẽ đọc đến
cuối file
Bài 6: Ngoại lệ và Tập tin
… những bước chập chững vào thế giới Khoa học dữ liệu … Trần Doãn Hiếu
MỞ VÀ GHI TẬP TIN VĂN BẢN
Bài 6: Ngoại lệ và Tập tin
Mở tập tin ch6_08.txt trong thư mục hiện hành và ghi nội
dung với mã Unicode (ghi đè nếu tập tin này đã có)
(Ví dụ 8-Chương 6)
… những bước chập chững vào thế giới Khoa học dữ liệu … Trần Doãn Hiếu
MỞ VÀ ĐỌC TẬP TIN VĂN BẢN
Bài 6: Ngoại lệ và Tập tin
(Ví dụ 9-Chương 6)
… những bước chập chững vào thế giới Khoa học dữ liệu … Trần Doãn Hiếu
MỞ VÀ ĐỌC TẬP TIN VĂN BẢN
Bài 6: Ngoại lệ và Tập tin
(Ví dụ 10-Chương 6)
… những bước chập chững vào thế giới Khoa học dữ liệu … Trần Doãn Hiếu
ĐỌC TẬP TIN
• Sử dụng phương thức read(size)
Bài 6: Ngoại lệ và Tập tin
(Ví dụ 11-Chương 6)
… những bước chập chững vào thế giới Khoa học dữ liệu … Trần Doãn Hiếu
ĐỌC TẬP TIN
• Sử dụng phương thức read, tell và seek
Bài 6: Ngoại lệ và Tập tin
(Ví dụ 12-Chương 6)
… những bước chập chững vào thế giới Khoa học dữ liệu … Trần Doãn Hiếu
BÀI TẬP THỰC HÀNH
Bài 6: Ngoại lệ và Tập tin
… những bước chập chững vào thế giới Khoa học dữ liệu … Trần Doãn Hiếu