LẬP TRÌNH PYTHON Bài 8 Ngoại lệ và xử lý ngoại lệ Tóm tắt nội dung bài trước ▪ Kiểu dữ liệu từ điển là kiểu dữ liệu lấy cảm hứng từ từ điển trong cuộc sống ▪ Từ điển là một tập các mục, một mục là một[.]
LẬP TRÌNH PYTHON Bài 8: Ngoại lệ xử lý ngoại lệ Tóm tắt nội dung trước ▪ Kiểu liệu từ điển kiểu liệu lấy cảm hứng từ từ điển sống ▪ ▪ ▪ ▪ Từ điển tập mục, mục cặp key value Các key phải đôi khác nhau, phải kiểu liệu bất biến Có thể tra cứu value thơng qua phép tốn mục với key Dữ liệu từ điển khơng có tính thứ tự, duyệt vịng lặp ▪ Module Package chế Python sử dụng để kiểm soát mã nguồn hiệu ▪ Một file mã nguồn = module, tái sử dụng import ▪ Một thư mục chứa mã nguồn = package ▪ Module math chứa nhiều hàm toán học TRƯƠNG XUÂN NAM Nội dung Ngoại lệ gì? Xử lý ngoại lệ Một số loại ngoại lệ thường gặp Tự sinh ngoại lệ Bài tập TRƯƠNG XUÂN NAM Phần Ngoại lệ gì? TRƯƠNG XUÂN NAM Ngoại lệ gì? ▪ Việc chương trình máy tính hoạt động khơng hồn hảo khơng thể tránh khỏi ▪ Thường giới lập trình chia lỗi thành nhóm Lỗi viết chương trình: hệ chương trình khơng chạy gặp dịng lệnh sai, thông dịch (hoặc không dịch được, biên dịch) Lỗi chương trình chạy: hệ phải thực lại • Chẳng hạn nhập liệu khơng đúng, phải nhập lại Ngoại lệ: lỗi, xảy có bất thường khiến chức thực • Chẳng hạn ghi liệu file, file lại bị tiến trình khác xóa ▪ Ngoại lệ = lỗi? Đúng, không hẳn TRƯƠNG XUÂN NAM Ngoại lệ gì? ▪ Ranh giới ngoại lệ lỗi mong manh, chí khó phân biệt nhiều tình ▪ Vấn đề: Cách chia lỗi thành nhóm có khuynh hướng cho mơi trường thực thi chương trình thân thiện hồn hảo ▪ Python quan điểm nên chia lỗi thành loại ▪ Syntax error: viết sai cú pháp, khiến chương trình thơng dịch khơng dịch được, trường hợp lập trình viên phải viết lại mã, khơng có phương án khác ▪ Exception: xảy bất thường không thiết kế • Như xử lý exception khiến chương trình ổn định hoạt động tốt tình • Trường hợp lập trình viên phải có phương án khắc phục TRƯƠNG XUÂN NAM Ngoại lệ gì? ▪ Ví dụ syntax error: >>> while True print('Hello world') File "", line while True print('Hello world') ^ SyntaxError: invalid syntax ▪ Ví dụ exception: >>> 10 * (1/0) Traceback (most recent call last): File "", line 1, in ZeroDivisionError: division by zero ▪ Có vẻ syntax error exception!!! TRƯƠNG XUÂN NAM Phần Xử lý ngoại lệ TRƯƠNG XUÂN NAM “xử lý” ngoại lệ Vòng lặp nhập X người dùng nhập vào giá trị số while True: try: x = int(input("Nhập số X: ")) break Khối nhập X (có thể nhập lỗi) except ValueError: print("Lỗi, nhập lại.") Xử lý lỗi xảy print("X =", x) TRƯƠNG XUÂN NAM Cú pháp try-except-else-finally ▪ Cú pháp: try: except: else: finally: ▪ Công việc khối: ▪ Khối “try”: đoạn mã có khả gây lỗi, lỗi xảy ra, khối bị dừng dòng gây lỗi ▪ Khối “except”: đoạn mã xử lý lỗi, thực có lỗi xảy ▪ Khối “else”: xuất sau khối except cuối cùng, đoạn mã thực khơng có except thực (đoạn try khơng có lỗi) ▪ Khối “finally”: cịn gọi khối clean-up, ln thực dù có xảy lỗi hay không TRƯƠNG XUÂN NAM 10 ... sinh ngoại lệ Bài tập TRƯƠNG XUÂN NAM Phần Ngoại lệ gì? TRƯƠNG XUÂN NAM Ngoại lệ gì? ▪ Việc chương trình máy tính hoạt động khơng hồn hảo khơng thể tránh khỏi ▪ Thường giới lập trình chia lỗi... khơng thiết kế • Như xử lý exception khiến chương trình ổn định hoạt động tốt tình • Trường hợp lập trình viên phải có phương án khắc phục TRƯƠNG XUÂN NAM Ngoại lệ gì? ▪ Ví dụ syntax error: >>> while... ZeroDivisionError: division by zero ▪ Có vẻ syntax error exception!!! TRƯƠNG XUÂN NAM Phần Xử lý ngoại lệ TRƯƠNG XUÂN NAM “xử lý” ngoại lệ Vòng lặp nhập X người dùng nhập vào giá trị số while