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ệ)

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à:

ExceptionMô tả
IndexErrorKhi chỉ mục sai của một danh sách được truy xuất.
AssertionErrorNó xảy ra khi câu lệnh khẳng định không thành công
AttributeErrorNó xảy ra khi gán thuộc tính không thành công.
ImportErrorNó xảy ra khi không tìm thấy mô-đun đã nhập.
KeyErrorNó xảy ra khi không tìm thấy khóa của từ điển.
NameErrorNó xảy ra khi biến không được xác định.
MemoryErrorNó xảy ra khi một chương trình hết bộ nhớ.
TypeErrorNó 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:

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!

Đăng ký kênh youtube để ủng hộ Cafedev nha các bạn, Thanks you!