Lỗi trong python là gì?

Một chương trình Python kết thúc ngay khi gặp lỗi. Trong Python, lỗi có thể là lỗi cú pháp hoặc ngoại lệ. Trong bài viết này, bạn sẽ thấy ngoại lệ là gì và nó khác với lỗi cú pháp như thế nào. Sau đó, bạn sẽ tìm hiểu về cách đưa ra các ngoại lệ và đưa ra các xác nhận. Sau đó, bạn sẽ kết thúc bằng phần minh họa về khối thử và ngoại trừ

Tải xuống PDF miễn phí. Bảng cheat Python 3

Ngoại lệ so với lỗi cú pháp

Lỗi cú pháp xảy ra khi trình phân tích cú pháp phát hiện một câu lệnh không chính xác. Quan sát ví dụ sau

>>> print[ 0 / 0 ]]
  File "", line 1
    print[ 0 / 0 ]]
                  ^
SyntaxError: invalid syntax

Mũi tên chỉ nơi trình phân tích cú pháp gặp phải lỗi cú pháp. Trong ví dụ này, có quá nhiều dấu ngoặc. Xóa nó và chạy lại mã của bạn

>>> print[ 0 / 0]
Traceback [most recent call last]:
  File "", line 1, in 
ZeroDivisionError: integer division or modulo by zero

Lần này, bạn gặp phải một lỗi ngoại lệ. Loại lỗi này xảy ra bất cứ khi nào mã Python đúng cú pháp dẫn đến lỗi. Dòng cuối cùng của thông báo cho biết bạn gặp phải loại lỗi ngoại lệ nào

Thay vì hiển thị thông báo

x = 10
if x > 5:
    raise Exception['x should not exceed 5. The value of x was: {}'.format[x]]
6, Python nêu chi tiết loại lỗi ngoại lệ đã gặp phải. Trong trường hợp này, đó là một
x = 10
if x > 5:
    raise Exception['x should not exceed 5. The value of x was: {}'.format[x]]
7. Python đi kèm với nhiều ngoại lệ tích hợp khác nhau cũng như khả năng tạo ngoại lệ tự xác định

Loại bỏ các quảng cáo

Tăng một ngoại lệ

Chúng ta có thể sử dụng

x = 10
if x > 5:
    raise Exception['x should not exceed 5. The value of x was: {}'.format[x]]
8 để ném một ngoại lệ nếu một điều kiện xảy ra. Tuyên bố có thể được bổ sung với một ngoại lệ tùy chỉnh

Nếu bạn muốn đưa ra một lỗi khi một điều kiện nào đó xảy ra bằng cách sử dụng

x = 10
if x > 5:
    raise Exception['x should not exceed 5. The value of x was: {}'.format[x]]
8, bạn có thể thực hiện như thế này

x = 10
if x > 5:
    raise Exception['x should not exceed 5. The value of x was: {}'.format[x]]

Khi bạn chạy mã này, đầu ra sẽ như sau

Traceback [most recent call last]:
  File "", line 4, in 
Exception: x should not exceed 5. The value of x was: 10

Chương trình dừng lại và hiển thị ngoại lệ của chúng tôi trên màn hình, cung cấp manh mối về những gì đã xảy ra

Ngoại lệ
Traceback [most recent call last]:
  File "", line 4, in 
Exception: x should not exceed 5. The value of x was: 10
0

Thay vì đợi một chương trình bị lỗi giữa chừng, bạn cũng có thể bắt đầu bằng cách đưa ra một xác nhận trong Python. Chúng tôi

Traceback [most recent call last]:
  File "", line 4, in 
Exception: x should not exceed 5. The value of x was: 10
1 rằng một điều kiện nhất định được đáp ứng. Nếu điều kiện này trở thành
Traceback [most recent call last]:
  File "", line 4, in 
Exception: x should not exceed 5. The value of x was: 10
2, thì điều đó thật tuyệt vời. Chương trình có thể tiếp tục. Nếu điều kiện hóa ra là
Traceback [most recent call last]:
  File "", line 4, in 
Exception: x should not exceed 5. The value of x was: 10
3, bạn có thể yêu cầu chương trình đưa ra một ngoại lệ
Traceback [most recent call last]:
  File "", line 4, in 
Exception: x should not exceed 5. The value of x was: 10
0

Hãy xem ví dụ sau, nơi khẳng định rằng mã sẽ được thực thi trên hệ thống Linux

import sys
assert ['linux' in sys.platform], "This code runs on Linux only."

Nếu bạn chạy mã này trên máy Linux, xác nhận sẽ vượt qua. Nếu bạn chạy mã này trên máy Windows, kết quả của xác nhận sẽ là

Traceback [most recent call last]:
  File "", line 4, in 
Exception: x should not exceed 5. The value of x was: 10
3 và kết quả sẽ như sau

Traceback [most recent call last]:
  File "", line 2, in 
AssertionError: This code runs on Linux only.

Trong ví dụ này, ném một ngoại lệ

Traceback [most recent call last]:
  File "", line 4, in 
Exception: x should not exceed 5. The value of x was: 10
0 là điều cuối cùng mà chương trình sẽ thực hiện. Chương trình sẽ dừng lại và sẽ không tiếp tục. Nếu đó không phải là điều bạn muốn thì sao?

Khối
Traceback [most recent call last]:
  File "", line 4, in 
Exception: x should not exceed 5. The value of x was: 10
7 và
Traceback [most recent call last]:
  File "", line 4, in 
Exception: x should not exceed 5. The value of x was: 10
8. Xử lý ngoại lệ

Khối

Traceback [most recent call last]:
  File "", line 4, in 
Exception: x should not exceed 5. The value of x was: 10
7 và
Traceback [most recent call last]:
  File "", line 4, in 
Exception: x should not exceed 5. The value of x was: 10
8 trong Python được sử dụng để bắt và xử lý các ngoại lệ. Python thực thi mã sau câu lệnh
Traceback [most recent call last]:
  File "", line 4, in 
Exception: x should not exceed 5. The value of x was: 10
7 như một phần “bình thường” của chương trình. Mã theo sau câu lệnh
Traceback [most recent call last]:
  File "", line 4, in 
Exception: x should not exceed 5. The value of x was: 10
8 là phản hồi của chương trình đối với bất kỳ trường hợp ngoại lệ nào trong mệnh đề
Traceback [most recent call last]:
  File "", line 4, in 
Exception: x should not exceed 5. The value of x was: 10
7 trước đó

Như bạn đã thấy trước đó, khi mã đúng cú pháp gặp lỗi, Python sẽ đưa ra một lỗi ngoại lệ. Lỗi ngoại lệ này sẽ làm hỏng chương trình nếu nó không được xử lý. Mệnh đề

Traceback [most recent call last]:
  File "", line 4, in 
Exception: x should not exceed 5. The value of x was: 10
8 xác định cách chương trình của bạn phản ứng với các ngoại lệ

Hàm sau đây có thể giúp bạn hiểu về khối

Traceback [most recent call last]:
  File "", line 4, in 
Exception: x should not exceed 5. The value of x was: 10
7 và
Traceback [most recent call last]:
  File "", line 4, in 
Exception: x should not exceed 5. The value of x was: 10
8

def linux_interaction[]:
    assert ['linux' in sys.platform], "Function can only run on Linux systems."
    print['Doing something.']

import sys
assert ['linux' in sys.platform], "This code runs on Linux only."
7 chỉ có thể chạy trên hệ thống Linux.
Traceback [most recent call last]:
  File "", line 4, in 
Exception: x should not exceed 5. The value of x was: 10
1 trong chức năng này sẽ đưa ra một ngoại lệ
Traceback [most recent call last]:
  File "", line 4, in 
Exception: x should not exceed 5. The value of x was: 10
0 nếu bạn gọi nó trên một hệ điều hành khác ngoài Linux

Bạn có thể cung cấp cho chức năng một

Traceback [most recent call last]:
  File "", line 4, in 
Exception: x should not exceed 5. The value of x was: 10
7 bằng cách sử dụng đoạn mã sau

try:
    linux_interaction[]
except:
    pass

Cách bạn xử lý lỗi ở đây là đưa ra một

Traceback [most recent call last]:
  File "", line 2, in 
AssertionError: This code runs on Linux only.
1. Nếu bạn chạy mã này trên máy Windows, bạn sẽ nhận được kết quả sau


bạn không có gì. Điều tốt ở đây là chương trình không bị sập. Nhưng sẽ rất tuyệt nếu một số loại ngoại lệ xảy ra bất cứ khi nào bạn chạy mã của mình. Để đạt được điều này, bạn có thể thay đổi

Traceback [most recent call last]:
  File "", line 2, in 
AssertionError: This code runs on Linux only.
1 thành thứ gì đó có thể tạo ra một thông báo cung cấp thông tin, chẳng hạn như vậy

try:
    linux_interaction[]
except:
    print['Linux function was not executed']

Thực thi mã này trên máy Windows

>>> print[ 0 / 0]
Traceback [most recent call last]:
  File "", line 1, in 
ZeroDivisionError: integer division or modulo by zero
0

Khi một ngoại lệ xảy ra trong một chương trình đang chạy chức năng này, chương trình sẽ tiếp tục cũng như thông báo cho bạn về thực tế là lệnh gọi chức năng không thành công

Những gì bạn không nhận thấy là loại lỗi đã được đưa ra do lệnh gọi hàm. Để biết chính xác điều gì đã xảy ra, bạn cần phải bắt lỗi mà hàm đã đưa ra

Đoạn mã sau là một ví dụ trong đó bạn ghi lại

Traceback [most recent call last]:
  File "", line 4, in 
Exception: x should not exceed 5. The value of x was: 10
0 và xuất thông báo đó ra màn hình

>>> print[ 0 / 0]
Traceback [most recent call last]:
  File "", line 1, in 
ZeroDivisionError: integer division or modulo by zero
1

Chạy chức năng này trên máy Windows sẽ xuất ra kết quả như sau

>>> print[ 0 / 0]
Traceback [most recent call last]:
  File "", line 1, in 
ZeroDivisionError: integer division or modulo by zero
2

Thông báo đầu tiên là

Traceback [most recent call last]:
  File "", line 4, in 
Exception: x should not exceed 5. The value of x was: 10
0, cho bạn biết rằng chức năng này chỉ có thể được thực thi trên máy Linux. Thông báo thứ hai cho bạn biết chức năng nào chưa được thực hiện

Trong ví dụ trước, bạn đã gọi một hàm do chính bạn viết. Khi bạn thực hiện chức năng, bạn đã bắt gặp ngoại lệ

Traceback [most recent call last]:
  File "", line 4, in 
Exception: x should not exceed 5. The value of x was: 10
0 và in nó ra màn hình

Đây là một ví dụ khác khi bạn mở tệp và sử dụng ngoại lệ tích hợp sẵn

>>> print[ 0 / 0]
Traceback [most recent call last]:
  File "", line 1, in 
ZeroDivisionError: integer division or modulo by zero
3

Nếu tập tin. log không tồn tại, khối mã này sẽ xuất ra như sau

>>> print[ 0 / 0]
Traceback [most recent call last]:
  File "", line 1, in 
ZeroDivisionError: integer division or modulo by zero
4

Đây là một thông báo cung cấp thông tin và chương trình của chúng tôi sẽ vẫn tiếp tục chạy. Trong tài liệu Python, bạn có thể thấy rằng có rất nhiều ngoại lệ tích hợp sẵn mà bạn có thể sử dụng tại đây. Một ngoại lệ được mô tả trên trang đó là như sau

Ngoại lệ

Traceback [most recent call last]:
  File "", line 2, in 
AssertionError: This code runs on Linux only.
6

Xảy ra khi một tệp hoặc thư mục được yêu cầu nhưng không tồn tại. Tương ứng với errno ENOENT

Để bắt loại ngoại lệ này và in ra màn hình, bạn có thể sử dụng đoạn mã sau

>>> print[ 0 / 0]
Traceback [most recent call last]:
  File "", line 1, in 
ZeroDivisionError: integer division or modulo by zero
5

Trong trường hợp này, nếu tập tin. log không tồn tại, đầu ra sẽ như sau

>>> print[ 0 / 0]
Traceback [most recent call last]:
  File "", line 1, in 
ZeroDivisionError: integer division or modulo by zero
6

Bạn có thể có nhiều hơn một lệnh gọi hàm trong mệnh đề

Traceback [most recent call last]:
  File "", line 4, in 
Exception: x should not exceed 5. The value of x was: 10
7 của mình và đoán trước việc nắm bắt các ngoại lệ khác nhau. Một điều cần lưu ý ở đây là mã trong mệnh đề
Traceback [most recent call last]:
  File "", line 4, in 
Exception: x should not exceed 5. The value of x was: 10
7 sẽ dừng ngay khi gặp ngoại lệ

Cảnh báo. Bắt

Traceback [most recent call last]:
  File "", line 2, in 
AssertionError: This code runs on Linux only.
9 ẩn tất cả các lỗi…ngay cả những lỗi hoàn toàn không mong muốn. Đây là lý do tại sao bạn nên tránh các mệnh đề
Traceback [most recent call last]:
  File "", line 4, in 
Exception: x should not exceed 5. The value of x was: 10
8 trần trụi trong các chương trình Python của mình. Thay vào đó, bạn sẽ muốn tham khảo các lớp ngoại lệ cụ thể mà bạn muốn nắm bắt và xử lý. Bạn có thể tìm hiểu thêm về lý do tại sao đây là một ý tưởng hay trong hướng dẫn này

Nhìn vào đoạn mã sau. Ở đây, trước tiên bạn gọi hàm

import sys
assert ['linux' in sys.platform], "This code runs on Linux only."
7 rồi thử mở một tệp

>>> print[ 0 / 0]
Traceback [most recent call last]:
  File "", line 1, in 
ZeroDivisionError: integer division or modulo by zero
7

Nếu tệp không tồn tại, chạy mã này trên máy Windows sẽ xuất ra như sau

>>> print[ 0 / 0]
Traceback [most recent call last]:
  File "", line 1, in 
ZeroDivisionError: integer division or modulo by zero
8

Bên trong mệnh đề

Traceback [most recent call last]:
  File "", line 4, in 
Exception: x should not exceed 5. The value of x was: 10
7, bạn gặp phải một ngoại lệ ngay lập tức và không đến được phần mà bạn cố gắng mở tệp. đăng nhập. Bây giờ hãy xem điều gì sẽ xảy ra khi bạn chạy mã trên máy Linux

>>> print[ 0 / 0]
Traceback [most recent call last]:
  File "", line 1, in 
ZeroDivisionError: integer division or modulo by zero
6

Dưới đây là những điểm chính

  • Mệnh đề
    Traceback [most recent call last]:
      File "", line 4, in 
    Exception: x should not exceed 5. The value of x was: 10
    
    7 được thực thi cho đến khi gặp phải ngoại lệ đầu tiên
  • Bên trong mệnh đề
    Traceback [most recent call last]:
      File "", line 4, in 
    Exception: x should not exceed 5. The value of x was: 10
    
    8 hoặc trình xử lý ngoại lệ, bạn xác định cách chương trình phản hồi ngoại lệ
  • Bạn có thể dự đoán nhiều ngoại lệ và phân biệt cách chương trình sẽ phản hồi chúng
  • Tránh sử dụng mệnh đề
    Traceback [most recent call last]:
      File "", line 4, in 
    Exception: x should not exceed 5. The value of x was: 10
    
    8 trần

Loại bỏ các quảng cáo

Mệnh đề
def linux_interaction[]:
    assert ['linux' in sys.platform], "Function can only run on Linux systems."
    print['Doing something.']
6

Trong Python, sử dụng câu lệnh

def linux_interaction[]:
    assert ['linux' in sys.platform], "Function can only run on Linux systems."
    print['Doing something.']
6, bạn có thể ra lệnh cho chương trình chỉ thực thi một khối mã nhất định khi không có ngoại lệ

Nhìn vào ví dụ sau

x = 10
if x > 5:
    raise Exception['x should not exceed 5. The value of x was: {}'.format[x]]
0

Nếu bạn chạy mã này trên hệ thống Linux, đầu ra sẽ như sau

x = 10
if x > 5:
    raise Exception['x should not exceed 5. The value of x was: {}'.format[x]]
1

Vì chương trình không gặp bất kỳ ngoại lệ nào nên mệnh đề

def linux_interaction[]:
    assert ['linux' in sys.platform], "Function can only run on Linux systems."
    print['Doing something.']
6 đã được thực thi

Bạn cũng có thể

Traceback [most recent call last]:
  File "", line 4, in 
Exception: x should not exceed 5. The value of x was: 10
7 để chạy mã bên trong mệnh đề
def linux_interaction[]:
    assert ['linux' in sys.platform], "Function can only run on Linux systems."
    print['Doing something.']
6 và nắm bắt các ngoại lệ có thể xảy ra ở đó

x = 10
if x > 5:
    raise Exception['x should not exceed 5. The value of x was: {}'.format[x]]
2

Nếu bạn thực thi mã này trên máy Linux, bạn sẽ nhận được kết quả sau

x = 10
if x > 5:
    raise Exception['x should not exceed 5. The value of x was: {}'.format[x]]
3

Từ đầu ra, bạn có thể thấy rằng hàm

import sys
assert ['linux' in sys.platform], "This code runs on Linux only."
7 đã chạy. Vì không gặp trường hợp ngoại lệ nào nên cố gắng mở tệp. nhật ký đã được thực hiện. Tệp đó không tồn tại và thay vì mở tệp, bạn đã bắt gặp ngoại lệ
Traceback [most recent call last]:
  File "", line 2, in 
AssertionError: This code runs on Linux only.
6

Dọn dẹp sau khi sử dụng
try:
    linux_interaction[]
except:
    pass
3

Hãy tưởng tượng rằng bạn luôn phải thực hiện một số loại hành động để dọn dẹp sau khi thực thi mã của mình. Python cho phép bạn làm như vậy bằng cách sử dụng mệnh đề

try:
    linux_interaction[]
except:
    pass
3

Hãy xem ví dụ sau

x = 10
if x > 5:
    raise Exception['x should not exceed 5. The value of x was: {}'.format[x]]
4

Trong đoạn mã trước, mọi thứ trong mệnh đề

try:
    linux_interaction[]
except:
    pass
3 sẽ được thực thi. Sẽ không có vấn đề gì nếu bạn gặp một ngoại lệ ở đâu đó trong mệnh đề
Traceback [most recent call last]:
  File "", line 4, in 
Exception: x should not exceed 5. The value of x was: 10
7 hoặc
def linux_interaction[]:
    assert ['linux' in sys.platform], "Function can only run on Linux systems."
    print['Doing something.']
6. Chạy mã trước đó trên máy Windows sẽ xuất ra như sau

x = 10
if x > 5:
    raise Exception['x should not exceed 5. The value of x was: {}'.format[x]]
5

Loại bỏ các quảng cáo

Tổng hợp

Sau khi thấy sự khác biệt giữa lỗi cú pháp và ngoại lệ, bạn đã tìm hiểu về nhiều cách khác nhau để tăng, bắt và xử lý ngoại lệ trong Python. Trong bài viết này, bạn đã thấy các tùy chọn sau

  • x = 10
    if x > 5:
        raise Exception['x should not exceed 5. The value of x was: {}'.format[x]]
    
    8 cho phép bạn đưa ra một ngoại lệ bất cứ lúc nào
  • Traceback [most recent call last]:
      File "", line 4, in 
    Exception: x should not exceed 5. The value of x was: 10
    
    1 cho phép bạn xác minh xem một điều kiện nhất định có được đáp ứng hay không và đưa ra một ngoại lệ nếu không
  • Trong mệnh đề
    Traceback [most recent call last]:
      File "", line 4, in 
    Exception: x should not exceed 5. The value of x was: 10
    
    7, tất cả các câu lệnh được thực hiện cho đến khi gặp ngoại lệ
  • Traceback [most recent call last]:
      File "", line 4, in 
    Exception: x should not exceed 5. The value of x was: 10
    
    8 được sử dụng để nắm bắt và xử lý [các] ngoại lệ gặp phải trong mệnh đề try
  • def linux_interaction[]:
        assert ['linux' in sys.platform], "Function can only run on Linux systems."
        print['Doing something.']
    
    6 cho phép bạn mã các phần chỉ chạy khi không gặp ngoại lệ trong mệnh đề try
  • try:
        linux_interaction[]
    except:
        pass
    
    3 cho phép bạn thực thi các phần mã luôn chạy, có hoặc không có bất kỳ ngoại lệ nào đã gặp trước đó

Tải xuống PDF miễn phí. Bảng cheat Python 3

Hy vọng rằng bài viết này đã giúp bạn hiểu các công cụ cơ bản mà Python cung cấp khi xử lý các ngoại lệ

Đánh dấu là đã hoàn thành

Xem ngay Hướng dẫn này có một khóa học video liên quan do nhóm Real Python tạo. Xem nó cùng với hướng dẫn bằng văn bản để hiểu sâu hơn. Tăng và xử lý ngoại lệ Python

🐍 Thủ thuật Python 💌

Nhận một Thủ thuật Python ngắn và hấp dẫn được gửi đến hộp thư đến của bạn vài ngày một lần. Không có thư rác bao giờ. Hủy đăng ký bất cứ lúc nào. Được quản lý bởi nhóm Real Python

Gửi cho tôi thủ thuật Python »

Giới thiệu về Said van de Klundert

Said là một kỹ sư mạng, người đam mê Python và là tác giả khách mời tại Real Python

» Thông tin thêm về Said

Mỗi hướng dẫn tại Real Python được tạo bởi một nhóm các nhà phát triển để nó đáp ứng các tiêu chuẩn chất lượng cao của chúng tôi. Các thành viên trong nhóm đã làm việc trong hướng dẫn này là

Adriana

Joanna

Bậc thầy Kỹ năng Python trong thế giới thực Với quyền truy cập không giới hạn vào Python thực

Tham gia với chúng tôi và có quyền truy cập vào hàng nghìn hướng dẫn, khóa học video thực hành và cộng đồng các Pythonistas chuyên gia

Nâng cao kỹ năng Python của bạn »

Chuyên gia Kỹ năng Python trong thế giới thực
Với quyền truy cập không giới hạn vào Python thực

Tham gia với chúng tôi và có quyền truy cập vào hàng ngàn hướng dẫn, khóa học video thực hành và cộng đồng Pythonistas chuyên gia

Nâng cao kỹ năng Python của bạn »

Bạn nghĩ sao?

Đánh giá bài viết này

Tweet Chia sẻ Chia sẻ Email

Bài học số 1 hoặc điều yêu thích mà bạn đã học được là gì?

Mẹo bình luận. Những nhận xét hữu ích nhất là những nhận xét được viết với mục đích học hỏi hoặc giúp đỡ các sinh viên khác. và nhận câu trả lời cho các câu hỏi phổ biến trong cổng thông tin hỗ trợ của chúng tôi

3 loại lỗi 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 .

Lỗi và ngoại lệ là gì?

Lỗi cho biết sự cố chủ yếu xảy ra do khan hiếm tài nguyên hệ thống. Các trường hợp ngoại lệ là các vấn đề có thể xuất hiện trong thời gian chạy và biên dịch . 2. Không thể phục hồi từ một lỗi.

Lỗi trong lập trình là gì?

Lỗi là một thao tác bất hợp pháp do người dùng thực hiện dẫn đến hoạt động bất thường của chương trình . Lỗi lập trình thường không bị phát hiện cho đến khi chương trình được biên dịch hoặc thực thi. Một số lỗi ngăn chương trình biên dịch hoặc thực thi.

Lỗi được gọi bằng Python là gì?

Trong python có ba loại lỗi; . syntax errors, logic errors and exceptions.

Chủ Đề