Lỗi Python và các ngoại lệ tích hợp

Trong hướng dẫn này, bạn sẽ tìm hiểu về các loại lỗi và ngoại lệ khác nhau được tích hợp sẵn trong Python. Chúng được nâng lên bất cứ khi nào trình thông dịch Python gặp lỗi.

Video: Xử lý ngoại lệ Python

Chúng ta có thể mắc một số sai lầm nhất định trong khi viết một chương trình dẫn đến lỗi khi chúng ta cố gắng chạy nó. Một chương trình python sẽ kết thúc ngay sau khi nó gặp lỗi chưa được khắc phục. Những lỗi này có thể được phân loại rộng rãi thành hai loại:

  1. Lỗi cú pháp
  2. Lỗi logic (Ngoại lệ)

Lỗi cú pháp Python

Lỗi do không tuân theo cấu trúc thích hợp (cú pháp) của ngôn ngữ được gọi là lỗi cú pháp hoặc lỗi phân tích cú pháp .

Hãy xem một ví dụ:

 >>> if a < 3 File "", line 1 if a < 3 SyntaxError: invalid syntax

Như thể hiện trong ví dụ, một mũi tên cho biết nơi trình phân tích cú pháp gặp lỗi cú pháp.

Chúng tôi có thể nhận thấy ở đây rằng dấu hai chấm :bị thiếu trong ifcâu lệnh.

Lỗi logic Python (Ngoại lệ)

Các lỗi xảy ra trong thời gian chạy (sau khi vượt qua kiểm tra cú pháp) được gọi là ngoại lệ hoặc lỗi lôgic .

Ví dụ: chúng xảy ra khi chúng tôi cố gắng mở một tệp (để đọc) không tồn tại ( FileNotFoundError), cố gắng chia một số cho không ( ZeroDivisionError) hoặc cố gắng nhập một mô-đun không tồn tại ( ImportError).

Bất cứ khi nào các loại lỗi thời gian chạy này xảy ra, Python sẽ tạo một đối tượng ngoại lệ. Nếu không được xử lý đúng cách, nó sẽ in một dấu vết về lỗi đó cùng với một số chi tiết về lý do tại sao lỗi đó xảy ra.

Hãy xem cách Python xử lý những lỗi này:

 >>> 1 / 0 Traceback (most recent call last): File "", line 301, in runcode File "", line 1, in ZeroDivisionError: division by zero >>> open("imaginary.txt") Traceback (most recent call last): File "", line 301, in runcode File "", line 1, in FileNotFoundError: (Errno 2) No such file or directory: 'imaginary.txt'

Các ngoại lệ tích hợp trong Python

Hoạt động bất hợp pháp có thể phát sinh ngoại lệ. Có rất nhiều ngoại lệ tích hợp sẵn trong Python được nêu ra khi các lỗi tương ứng xảy ra. Chúng ta có thể xem tất cả các ngoại lệ được tích hợp sẵn bằng cách sử dụng local()hàm tích hợp như sau:

 print(dir(locals()('__builtins__')))

locals()('__builtins__')sẽ trả về một mô-đun gồm các ngoại lệ, chức năng và thuộc tính được tích hợp sẵn. dircho phép chúng tôi liệt kê các thuộc tính này dưới dạng chuỗi.

Một số ngoại lệ tích hợp sẵn phổ biến trong lập trình Python cùng với lỗi gây ra chúng được liệt kê bên dưới:

ngoại lệ Nguyên nhân lỗi
AssertionError Nâng lên khi một assertcâu lệnh không thành công.
AttributeError Tăng lên khi phép gán hoặc tham chiếu thuộc tính không thành công.
EOFError Tăng lên khi input()hàm đạt đến điều kiện cuối tệp.
FloatingPointError Tăng lên khi hoạt động dấu chấm động không thành công.
GeneratorExit Tăng lên khi close()phương thức của trình tạo được gọi.
ImportError Nâng lên khi không tìm thấy mô-đun đã nhập.
IndexError Tăng lên khi chỉ mục của một chuỗi nằm ngoài phạm vi.
KeyError Được nâng lên khi không tìm thấy khóa trong từ điển.
KeyboardInterrupt Tăng lên khi người dùng nhấn phím ngắt ( Ctrl+Choặc Delete).
MemoryError Nâng lên khi một hoạt động hết bộ nhớ.
NameError Được nâng lên khi một biến không được tìm thấy trong phạm vi cục bộ hoặc toàn cầu.
NotImplementedError Nâng lên bằng phương pháp trừu tượng.
OSError Nâng cao khi hệ thống hoạt động gây ra lỗi liên quan đến hệ thống.
OverflowError Tăng lên khi kết quả của một phép tính số học quá lớn để được biểu diễn.
ReferenceError Tăng lên khi một proxy tham chiếu yếu được sử dụng để truy cập một tham chiếu được thu thập rác.
RuntimeError Tăng lên khi lỗi không thuộc bất kỳ loại nào khác.
StopIteration Được nâng lên bởi next()hàm để chỉ ra rằng không có mục nào nữa được trả về bởi trình vòng lặp.
SyntaxError Được nâng lên bởi trình phân tích cú pháp khi gặp lỗi cú pháp.
IndentationError Nâng lên khi có thụt lề không chính xác.
TabError Tăng lên khi thụt lề bao gồm các tab và dấu cách không nhất quán.
SystemError Tăng lên khi trình thông dịch phát hiện lỗi nội bộ.
SystemExit Nâng lên theo sys.exit()chức năng.
TypeError Tăng lên khi một chức năng hoặc thao tác được áp dụng cho một đối tượng không đúng loại.
UnboundLocalError Được nâng lên khi một tham chiếu được thực hiện đến một biến cục bộ trong một 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 đó.
UnicodeError Tăng lên khi xảy ra lỗi mã hóa hoặc giải mã liên quan đến Unicode.
UnicodeEncodeError Tăng lên khi xảy ra lỗi liên quan đến Unicode trong quá trình mã hóa.
UnicodeDecodeError Tăng lên khi xảy ra lỗi liên quan đến Unicode trong quá trình giải mã.
UnicodeTranslateError Tăng lên khi xảy ra lỗi liên quan đến Unicode trong quá trình dịch.
ValueError Được nâng lên khi một hàm nhận được một đối số có kiểu đúng nhưng giá trị không đúng.
ZeroDivisionError Được nâng lên khi toán hạng thứ hai của phép chia hoặc phép toán mô đun bằng 0.

Nếu được yêu cầu, chúng tôi cũng có thể xác định các ngoại lệ của riêng mình trong Python. Để tìm hiểu thêm về chúng, hãy truy cập Ngoại lệ do người dùng định nghĩa trong Python.

Chúng ta có thể xử lý những trường hợp ngoại lệ được xây dựng trong và người dùng định nghĩa bằng Python sử dụng try, exceptfinallybáo cáo. Để tìm hiểu thêm về chúng, hãy truy cập các câu lệnh thử Python, ngoại trừ và cuối cùng.

thú vị bài viết...