5 loại ngoại lệ trong python là gì?

Lỗi và ngoại lệ đóng một vai trò quan trọng trong quy trình làm việc của chương trình. Mặc dù các lỗi và ngoại lệ Python nghe có vẻ giống nhau, nhưng có những khác biệt chính giữa chúng khiến toàn bộ quá trình xử lý lỗi của một chương trình trở nên phức tạp hơn nhiều

Là nhà phát triển, chúng tôi cần đảm bảo rằng các chương trình chúng tôi viết có thể xử lý đúng càng nhiều loại ngoại lệ Python càng tốt và không bị ảnh hưởng bởi bất kỳ sự gián đoạn nào trong số này. Tuy nhiên, trước khi chúng ta học cách làm điều đó, điều cần thiết là chúng ta phải tìm hiểu đủ kỹ về các lỗi và ngoại lệ này để làm cho chương trình của chúng ta trở nên hoàn hảo

Các loại lỗi Python

Các loại lỗi mà chương trình Python có thể mắc phải, có thể xảy ra trước khi thực thi cũng như trong thời gian chạy. Chúng cũng là những dấu hiệu tiềm ẩn của các vấn đề nghiêm trọng có thể xảy ra trong chương trình.

Các ngoại lệ, còn được gọi là lỗi thời gian chạy, chỉ có thể được xác định trong thời gian chạy chương trình. Sau khi ném, các ngoại lệ này có thể làm gián đoạn luồng dự định của chương trình và có thể gây ra sự cố. Sau đó, có những lỗi có thể được xác định hoặc không được xác định trước thời gian chạy của nó. Tuy nhiên, điều quan trọng là chúng không nên được xử lý bằng cách bắt trái ngược với ngoại lệ. Điều này chủ yếu là do bản chất không thể phục hồi của lỗi. Cách thực hành đúng là xử lý chúng tại thời điểm viết mã

Trong hướng dẫn này, chúng ta sẽ chủ yếu nói về ba loại lỗi chính SyntaxError, RecursionError và OutofMemoryError

Các loại ngoại lệ của Python

Các ngoại lệ trong Python luôn xảy ra trong thời gian chạy và nếu chúng được xử lý tốt, người dùng cuối thậm chí có thể không bao giờ nhận thấy bất kỳ bản chất có vấn đề nào với chương trình của bạn. Vấn đề ngoại lệ là không giống như các lỗi, chúng rất khó đoán trước. Tuy nhiên, việc xác định và xử lý chúng trước có thể ngăn ngừa các sự cố, lỗi tiềm ẩn và tạo điều kiện thực thi suôn sẻ

Theo hệ thống phân cấp ngoại lệ của Python 2, chúng ta có thể xác định ba loại ngoại lệ chính của Python, chẳng hạn như StopIteration, StandardError và Warning. Mặc dù trong Python 3, hệ thống phân cấp đã được xác định lại bằng cách loại bỏ loại StandardError và loại bỏ hoàn toàn nhiều loại ngoại lệ của Python, chúng ta sẽ tuân theo hệ thống phân cấp ngoại lệ Python cũ hơn để dễ hiểu khi nói về các ngoại lệ. Cũng cần lưu ý rằng chức năng của các ngoại lệ này không bị thay đổi mà chỉ có các loại ngoại lệ Python gốc bị thay đổi

1. Các loại lỗi trong Python

Bây giờ chúng ta có ý tưởng về các loại lỗi mà Python mắc phải. Trong phần này, chúng ta sẽ lần lượt xem xét các loại lỗi Python này

a. Các loại lỗi Python. Lỗi cú pháp

Lỗi cú pháp xảy ra do một dòng/nhiều dòng mã bị sai lệch so với cú pháp dự kiến. Trình phân tích cú pháp phát hiện chúng và do đó, cũng có thể được gọi là lỗi phân tích cú pháp

Bây giờ chúng ta sẽ xem xét một ví dụ để hiểu rõ hơn về nó. Trong đoạn mã sau, chúng tôi đã viết một câu lệnh in theo cú pháp kiểu Python 2. Khi chúng tôi thực thi nó, nó sẽ thông báo cho chúng tôi bằng SyntaxError

5 loại ngoại lệ trong python là gì?
5 loại ngoại lệ trong python là gì?

đầu ra

5 loại ngoại lệ trong python là gì?
5 loại ngoại lệ trong python là gì?

Hãy xem xét một lỗi cú pháp khác

5 loại ngoại lệ trong python là gì?
5 loại ngoại lệ trong python là gì?

Trong đoạn mã trên, chúng ta đã viết phần thân bên trong câu lệnh if mà không có dấu đầu dòng thích hợp. Do đó, điều này sẽ xuất ra một IndentationError

đầu ra

5 loại ngoại lệ trong python là gì?
5 loại ngoại lệ trong python là gì?

Các lỗi này được phát hiện trước khi thực thi và do đó, nếu ban đầu chúng ta có thể thực thi mã của mình mà không gặp lỗi này, thì chúng ta có thể thực hiện phần còn lại của quá trình thực thi

Nữa

b. Các loại lỗi Python. Đệ quyLỗi

Các lỗi đệ quy có liên quan đến ngăn xếp vì người ta chỉ có thể thực thi một phương thức bên trong chính nó mà không vượt quá giới hạn do ngăn xếp áp đặt

Bây giờ chúng ta sẽ định nghĩa một hàm đệ quy và gọi nó, kích hoạt một vòng lặp đệ quy vô hạn. Nói cách khác, nó sẽ tự gọi không ngừng cho đến khi đạt đến giới hạn ngăn xếp

5 loại ngoại lệ trong python là gì?
5 loại ngoại lệ trong python là gì?

đầu ra

5 loại ngoại lệ trong python là gì?
5 loại ngoại lệ trong python là gì?

c. Các loại lỗi Python. Lỗi bộ nhớ

Tất cả các biến và các đối tượng khác của chương trình chúng tôi viết và thực thi đang được lưu trữ trong RAM của thiết bị của bạn. Giả sử chúng ta đã viết một thuật toán làm sạch dữ liệu và chúng ta cần kiểm tra nó bằng một tệp dữ liệu lớn. Tuy nhiên, nếu tệp này là một đối tượng rất lớn mà RAM của chúng tôi không thể xử lý được, chúng tôi sẽ được cảnh báo bằng MemoryError và chương trình sẽ dừng để khôi phục

Bây giờ chúng ta đã đề cập đến các loại lỗi Python, hãy chuyển sang các loại lỗi ngoại lệ của Python.   

2. Các loại ngoại lệ Python. Dừng lặp lại

Ngoại lệ này được đưa ra trong trường hợp không có thêm mục hoặc đối tượng nào được tạo bởi trình vòng lặp. Nó thường được nâng lên bởi hàm __next__()

Chúng tôi sẽ tiếp tục và tạo một lớp để tạo các số kết quả và in chúng. Để dễ dàng, chúng tôi sẽ chỉ in các số từ 0 đến 5

5 loại ngoại lệ trong python là gì?
5 loại ngoại lệ trong python là gì?

Điều này sẽ xuất ra

5 loại ngoại lệ trong python là gì?
5 loại ngoại lệ trong python là gì?

Điều này sẽ tiếp tục in vô hạn 'Không'. Chúng ta có thể dễ dàng giải quyết vấn đề này bằng cách đưa ra một ngoại lệ StopIteration. Hãy sửa đổi chức năng __next__ như sau

5 loại ngoại lệ trong python là gì?
5 loại ngoại lệ trong python là gì?

Khi chúng tôi thực thi mã đã sửa đổi, nó sẽ chỉ in các số từ 0 đến 5 và dừng thực thi

3. Các loại ngoại lệ Python. ChuẩnLỗi

Trong hệ thống phân cấp ngoại lệ của Python 2,  ngoại lệ StandardError là lớp cơ sở cho nhiều ngoại lệ phổ biến có thể phát sinh khi chương trình đang được thực thi. Bây giờ chúng ta sẽ đi qua một vài trong số họ

a. Số họcLỗi

Loại ngoại lệ Python này được đưa ra cho các lỗi liên quan đến số học. Lớp cơ sở này có các ngoại lệ OverflowError, FloatingPointError và ZeroDivisionError

Hãy xem một ví dụ. Chúng tôi sẽ cố gắng chia một số cho 0

5 loại ngoại lệ trong python là gì?
5 loại ngoại lệ trong python là gì?

đầu ra

5 loại ngoại lệ trong python là gì?
5 loại ngoại lệ trong python là gì?

b. Khẳng địnhLỗi

Các câu lệnh khẳng định được các nhà phát triển sử dụng để gỡ lỗi mã để kiểm tra các điều kiện. Nếu câu lệnh khẳng định thành công, luồng chương trình không bị gián đoạn. Tuy nhiên, nếu câu lệnh không thành công, thì AssertionError sẽ xuất hiện

Hãy xem một ví dụ

5 loại ngoại lệ trong python là gì?
5 loại ngoại lệ trong python là gì?

đầu ra

5 loại ngoại lệ trong python là gì?
5 loại ngoại lệ trong python là gì?

c. Lỗi thuộc tính

Ngoại lệ này được đưa ra khi gán thuộc tính hoặc tham chiếu không thành công

Chúng tôi sẽ cố gắng xác định một đối tượng số nguyên và nối thêm một giá trị khác vào nó. Vì các đối tượng số nguyên không hỗ trợ nối thêm, nó sẽ tăng AttributeError

5 loại ngoại lệ trong python là gì?
5 loại ngoại lệ trong python là gì?

đầu ra

5 loại ngoại lệ trong python là gì?
5 loại ngoại lệ trong python là gì?

d. Nhập Lỗi

Đây là lớp cơ sở cho ngoại lệ ModuleNotFoundError, được đưa ra khi một mô-đun không tồn tại được nhập vào

5 loại ngoại lệ trong python là gì?
5 loại ngoại lệ trong python là gì?

đầu ra

5 loại ngoại lệ trong python là gì?
5 loại ngoại lệ trong python là gì?

e. Tra cứuLỗi

Đây là lớp cơ sở cho IndexError và KeyError, được nâng lên tương ứng khi chỉ mục hoặc khóa không hợp lệ để ánh xạ hoặc trình tự

5 loại ngoại lệ trong python là gì?
5 loại ngoại lệ trong python là gì?

đầu ra

5 loại ngoại lệ trong python là gì?
5 loại ngoại lệ trong python là gì?

f. LoạiLỗi

Ngoại lệ này được đưa ra khi một thao tác không phù hợp được áp dụng cho một đối tượng thuộc loại khác

5 loại ngoại lệ trong python là gì?
5 loại ngoại lệ trong python là gì?

đầu ra

5 loại ngoại lệ trong python là gì?
5 loại ngoại lệ trong python là gì?

Mặc dù chúng ta chỉ thảo luận về một số loại ngoại lệ mà Python có, còn có nhiều loại ngoại lệ khác trong ngôn ngữ Python. Là một nhà phát triển, một người nên trực quan về việc tìm hiểu thêm về thông tin chuyên sâu với nhiều phát triển đang được thực hiện và mã được viết. Bây giờ chúng ta sẽ chuyển sang loại ngoại lệ tiếp theo, Cảnh báo

4. Các loại ngoại lệ Python. Cảnh báo

Cảnh báo là lớp cơ sở cho các danh mục như UserWarning, PendingDeprecationWarning, DeprecationWarning, SyntaxWarning, RuntimeWarning, FutureWarning, ImportWarning, UnicodeWarning, BytesWarning và ResourceWarning. Vì lớp cơ sở Cảnh báo không phải là trọng tâm chính của hướng dẫn này, chúng tôi sẽ không thảo luận về vấn đề này nữa. Tuy nhiên, thật hữu ích khi nhớ rằng các cảnh báo không làm gián đoạn dòng chương trình của chúng tôi mà chỉ cảnh báo chúng tôi về bất kỳ hiện tượng đáng lo ngại nào

5. Xử lý lỗi và ngoại lệ

Bây giờ chúng ta đã biết về những loại ngoại lệ mà chúng ta có thể gặp phải, chúng ta đã sẵn sàng để xử lý các ngoại lệ. Quy trình cơ bản để giải quyết các trường hợp ngoại lệ bắt đầu bằng việc bắt chúng và quyết định phải làm gì tiếp theo. Hơn nữa, ý tưởng cơ bản nhất trong việc xử lý các ngoại lệ là các khối 'thử', 'ngoại trừ', 'khác' và 'cuối cùng'

try – Chứa mã có thể ném ngoại lệ

ngoại trừ – Phải làm gì nếu có ngoại lệ

khác - Nếu không có ngoại lệ, hãy chạy khối này

cuối cùng – Chạy mã này bất kể có ngoại lệ hay không

Hãy xem xét một số tình huống bắt ngoại lệ chỉ bằng cách sử dụng các khối try and except

a. Bắt tất cả các ngoại lệ

Hãy tưởng tượng rằng chương trình của chúng tôi không phức tạp lắm. Tuy nhiên, chúng tôi có một hoặc hai dòng mã tiềm năng có thể đưa ra ngoại lệ. Hơn nữa, chúng tôi không quan tâm đến loại ngoại lệ nào được đưa ra và chỉ muốn cung cấp cho chương trình một luồng mượt mà hơn. Đó là khi chúng ta có thể sử dụng các khối try và except đơn giản như sau

5 loại ngoại lệ trong python là gì?
5 loại ngoại lệ trong python là gì?

b. Tránh bắt ngoại lệ đặc biệt

Hãy tưởng tượng chúng ta muốn nắm bắt tất cả các ngoại lệ trừ những ngoại lệ đặc biệt như SystemExit, KeyboardInterrupt và GeneratorExit. Chúng tôi có thể muốn tiến hành như sau

5 loại ngoại lệ trong python là gì?
5 loại ngoại lệ trong python là gì?

c. Bắt ngoại lệ cá nhân

Nếu chúng tôi bắt các ngoại lệ riêng lẻ và xử lý chúng theo đó, chúng tôi có thể tiến hành như sau

Chúng tôi sẽ cố gắng bắt lỗi ArithmeticError tại đây

5 loại ngoại lệ trong python là gì?
5 loại ngoại lệ trong python là gì?

đầu ra

5 loại ngoại lệ trong python là gì?
5 loại ngoại lệ trong python là gì?

d. Sử dụng Khối 'else' và 'cuối cùng'

Hãy xem xét đoạn mã sau

5 loại ngoại lệ trong python là gì?
5 loại ngoại lệ trong python là gì?

Ở trên sẽ tạo ra đầu ra sau

5 loại ngoại lệ trong python là gì?
5 loại ngoại lệ trong python là gì?

Không có ngoại lệ nào được ném ra và do đó, mã bên trong câu lệnh khác đã được thực thi

Bây giờ chúng ta sẽ thêm một câu lệnh cuối cùng vào đoạn mã trên

5 loại ngoại lệ trong python là gì?
5 loại ngoại lệ trong python là gì?

Điều này sẽ xuất ra,

5 loại ngoại lệ trong python là gì?
5 loại ngoại lệ trong python là gì?

Vì vậy, nó đây. Đó là cách chúng ta có thể xử lý các ngoại lệ trong Python

Phần kết luận

Ngoại lệ là một tính năng thiết yếu của Python để xác định và giải quyết mọi vấn đề và sự cố có thể xảy ra trong thời gian chạy. Chúng có thể được coi là một phần của quy trình làm việc cốt lõi của chính chương trình. Hơn nữa, quy trình của chương trình có thể trở nên mượt mà và dễ hiểu hơn nhiều với việc xử lý chính xác các lỗi Python và ngoại lệ Python. Nếu bạn vẫn đang bắt đầu với Python và cần có nền tảng tốt hơn trước khi chuyển sang xử lý ngoại lệ, khóa học Python A-Z này hoặc khóa học Python Sơ cấp đến Chuyên nghiệp có thể là khóa học tốt nhất dành cho bạn

Năm loại ngoại lệ trong Python là gì?

Tăng lên khi toán hạng thứ hai của phép chia hoặc mô-đun bằng 0. .
Chỉ mụcLỗi. IndexError được đưa ra khi cố gắng truy cập một mục tại một chỉ mục không hợp lệ. .
ModuleNotFoundLỗi. ModuleNotFoundError bị ném khi không tìm thấy mô-đun. .
Lỗi chính. .
Nhập Lỗi. .
Dừng lặp lại. .
LoạiLỗi. .
Giá trịError. .
TênLỗi

Các loại ngoại lệ trong Python là gì?

Ngoại lệ tích hợp

3 loại ngoại lệ chính trong Python là gì?

Có ba loại lỗi chính có thể phân biệt được trong Python. lỗi cú pháp, ngoại lệ và lỗi logic .

Có bao nhiêu ngoại lệ trong Python?

Ngoại lệ tích hợp Python