Lỗi là các vấn đề trong một chương trình do đó chương trình sẽ ngừng thực thi. Mặt khác, các ngoại lệ được nêu ra khi một số sự kiện nội bộ xảy ra làm thay đổi quy trình bình thường của chương trình.
Hai loại lỗi xảy ra trong python.
- Lỗi cú pháp
- Lỗi logic (Ngoại lệ)
Nội dung chính
1. Lỗi cú pháp
Khi cú pháp thích hợp của ngôn ngữ không được tuân theo thì lỗi cú pháp sẽ được ném ra.
Ví dụ:
# initialize the amount variable
amount = 10000
# check that You are eligible to
# purchase Dsa Self Paced or not
if(amount>2999)
print("You are eligible to purchase Dsa Self Paced")
Kết quả:
Bạn sẽ thấy error cú pháp khi dùng code trên
Nó trả về một thông báo lỗi cú pháp vì sau câu lệnh if, dấu hai chấm: bị thiếu. Chúng tôi có thể sửa lỗi này bằng cách viết đúng cú pháp.
2. Logical errors(Exception)
Khi trong thời gian chạy, lỗi xảy ra sau khi vượt qua kiểm tra cú pháp được gọi là ngoại lệ hoặc kiểu logic. Ví dụ: khi chúng ta chia bất kỳ số nào cho 0 thì ngoại lệ ZeroDivisionError sẽ được nâng lên hoặc khi chúng ta nhập một mô-đun không tồn tại thì ImportError được báo lên.
Ví dụ:
# -----------------------------------------------------------
#Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
#@author cafedevn
#Contact: cafedevn@gmail.com
#Fanpage: https://www.facebook.com/cafedevn
#Group: https://www.facebook.com/groups/cafedev.vn/
#Instagram: https://instagram.com/cafedevn
#Twitter: https://twitter.com/CafedeVn
#Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
#Pinterest: https://www.pinterest.com/cafedevvn/
#YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/
# -----------------------------------------------------------
# initialize the amount variable
marks = 10000
# perform division with 0
a = marks / 0
print(a)
Trong ví dụ trên, lỗi ZeroDivisionError khi chúng ta đang cố gắng chia một số cho 0.
Ví dụ 2: Khi thụt đầu dòng không đúng.
if(a<3):
print("gfg")
Một số ngoại lệ tích hợp sẵn phổ biến khác với những ngoại lệ đã đề cập ở trên là:
Exception | Mô tả |
---|---|
IndexError | Khi chỉ mục sai của một danh sách được truy xuất. |
AssertionError | Nó xảy ra khi câu lệnh khẳng định không thành công |
AttributeError | Nó xảy ra khi gán thuộc tính không thành công. |
ImportError | Nó xảy ra khi không tìm thấy mô-đun đã nhập. |
KeyError | Nó xảy ra khi không tìm thấy khóa của từ điển. |
NameError | Nó xảy ra khi biến không được xác định. |
MemoryError | Nó xảy ra khi một chương trình hết bộ nhớ. |
TypeError | Nó xảy ra khi một chức năng và hoạt động được áp dụng không đúng loại. |
Lưu ý: Để biết thêm thông tin, hãy tham khảo tổng hợp các Ngoại lệ tích hợp trong Python
3. Xử lý lỗi – Error Handling
Khi một lỗi và một ngoại lệ được đưa ra thì chúng tôi sẽ xử lý điều đó với sự trợ giúp của phương pháp Xử lý.
- Xử lý các trường hợp ngoại lệ với Try/Except/Finally
Chúng tôi có thể xử lý lỗi bằng phương pháp Try/Except/Finally. Chúng tôi viết code không an toàn trong lần thử.
Thí dụ
# -----------------------------------------------------------
#Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
#@author cafedevn
#Contact: cafedevn@gmail.com
#Fanpage: https://www.facebook.com/cafedevn
#Group: https://www.facebook.com/groups/cafedev.vn/
#Instagram: https://instagram.com/cafedevn
#Twitter: https://twitter.com/CafedeVn
#Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
#Pinterest: https://www.pinterest.com/cafedevvn/
#YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/
# -----------------------------------------------------------
# put unsafe operation in try block
try:
print("code start")
# unsafe operation perform
print(1 / 0)
# if error occur the it goes in except block
except:
print("an error occurs")
# final code in finally block
finally:
print("Cafedev.vn")
Kết quả:
code start
an error occurs
Cafedev.vn
- Báo ngoại lệ cho một điều kiện xác định trước
Khi chúng ta muốn viết code cho giới hạn của điều kiện nhất định thì chúng ta có thể nêu ra một ngoại lệ.
Thí dụ:
# try for unsafe code
try:
amount = 1999
if amount < 2999:
# raise the ValueError
raise ValueError("please add money in your account")
else:
print("You are eligible to purchase DSA Self Paced course")
# if false then raise the value error
except ValueError as e:
print(e)
Kết quả:
please add money in your account
Nguồn và Tài liệu tiếng anh tham khảo:
Tài liệu từ cafedev:
- Full series tự học Python từ cơ bản tới nâng cao tại đây nha.
- Ebook về python tại đây.
- Các series tự học lập trình khác
Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:
Chào thân ái và quyết thắng!