Lỗi (error) và ngoại lệ (exception) trong Python

Đây là bài 30/54 bài của series môn học Ngôn ngữ lập trình Python

Chúng ta chắc chắn sẽ gặp những lỗi khi lập trình cũng như lúc chạy chương trình. Trong Python, chúng ta có thể chia các lỗi (error) thành 2 loại: syntax error exception.

1. Lỗi cú pháp (Syntax Error) trong Python

Lỗi cú pháp (syntax error) còn gọi là parsing error. Lỗi này xảy ra là do chúng ta không tuân thủ cú pháp của Python khi lập trình. Syntax error thường xảy ra khi chúng ta mới bắt đầu học Python nên chưa hiểu rõ về cú pháp của Python.

Ví dụ lỗi cú pháp trong Python

# SyntaxError: expected ':'
if a < 3
  print("a is smaller than 3")

Trong ví dụ trên, câu lệnh if thiếu dấu : nên gây ra lỗi cú pháp.

# SyntaxError: invalid syntax
while True:
  print(Hello world)

Trong ví dụ trên, đối số của hàm print không được đặt trong dấu nháy nên gây ra lỗi cú pháp.

2. Lỗi ngoại lệ (Exception) trong Python

Những lỗi xảy ra lúc chạy chương trình (runtime) được gọi là exception hay logical error. Có nhiều trường hợp có thể gây ra exception. Ví dụ, khi chúng ta mở một file không tồn tại sẽ gặp exception là FileNotFoundError. Hay chia một số cho 0 thì sẽ gặp exception là ZeroDivisionError. Hoặc nếu import một module không tồn tại thì sẽ gặp exception là ImportError.

Khi một exception xảy ra, Python sẽ tạo ra một đối tượng exception. Nếu những exception này không được xử lý thì Python sẽ dừng chương trình và in ra các thông báo lỗi.

# ZeroDivisionError: division by zero
x = 1/0
# NameError: name 'spam' is not defined
y = 4 + spam*3
# TypeError: can only concatenate str (not "int") to str
z = '2' + 2
# FileNotFoundError: [Errno 2] No such file or directory: 'imaginary.txt'
open("imaginary.txt")

3. Những exception được xây dựng sẵn trong Python

Có nhiều exception được xây dựng sẵn trong Python để bắt các exception. Chúng ta có thể sử dụng câu lệnh print(dir(locals()['__builtins__'])) để xem các exception được xây dựng sẵn trong Python.

Bảng bên dưới là danh sách một số exception thông dụng được xây dựng sẵn trong Python.

ExceptionNguyên nhân gây ra exception
AssertionErrorTrả về exception khi biểu thức so sánh của câu lệnh assert có kết quả là False
FloatingPointErrorXảy ra lỗi khi thao các trên các giá trị số thực gặp lỗi
ImportErrorXảy ra khi import một module mà Python không tìm thấy
IndexErrorXảy ra khi truy xuất một phần tử có index nằm ngoài phạm vi cho phép
KeyErrorXảy ra khi một key không tìm thấy trong một Dictionary
KeyboardInterruptKhi người dùng gõ các interrupt key (Ctrl+C hoặc Delete)
MemoryErrorXảy ra khi bộ nhớ lưu trữ bị đầy
NameErrorXảy ra khi một biến (variable) không tìm thấy trong phạm vi (scope) cục bộ (local) hoặc toàn cục (global)
NotImplementedErrorXảy ra khi một phương thức trừu tượng (abstract method) của lớp cơ sở không được định nghĩa lại trong dẫn xuất kế thừa lớp cơ sở đó
OSErrorĐây là những lỗi hệ thống của hệ điều hành
OverflowErrorXảy ra khi kết quả của một số phép tính cho ra giá trị quá lớn để lưu trữ và biểu diễn
RuntimeErrorXảy ra lỗi là một exception không thuộc bất kỳ exception nào được xây dựng sẵn trong Python
SyntaxErrorXảy ra khi cú pháp của Python không đúng quy định
IndentationErrorXảy ra khi chúng ta sử dụng indentation không đúng quy định
TabErrorXảy ra khi indentation sử dụng tab hoặc khoảng cách không nhất quán
SystemErrorXảy ra khi trình thông dịch phát hiện một lỗi nội bộ (internal error) nào đó
TypeErrorXảy ra khi một phương thức (method) hoặc toán tử (operator) được áp dụng cho một đối tượng (object) có kiểu dữ liệu không phù hợp
UnboundLocalErrorXảy ra khi gán giá trị (tham chiếu) cho một biến cục bộ trong một phương thức nhưng thật sự không có giá trị nào được biến đó tham chiếu đến
UnicodeErrorXảy ra khi mã hóa (encoding) hoặc giải mã (decoding) liên quan đến Unicode bị lỗi
ValueErrorMột hàm có đối số truyền vào đúng kiểu dữ liệu nhưng giá trị của đối số lại không phù hợp
ZeroDivisionErrorChia một số cho 0

Trong bài Cách xử lý ngoại lệ (exception) trong Python, chúng ta sẽ tìm hiểu cách sử lý các exception trong Python.

5/5 - (1 bình chọn)
Bài trước và bài sau trong môn học<< Các thao tác trên cấu trúc dữ liệu Dictionary trong PythonCách xử lý ngoại lệ (exception) trong Python >>
Chia sẻ trên mạng xã hội:

Trả lời

Lưu ý:

1) Vui lòng bình luận bằng tiếng Việt có dấu.

2) Khuyến khích sử dụng tên thật và địa chỉ email chính xác.

3) Mọi bình luận trái quy định sẽ bị xóa bỏ.