CodeGym /Các khóa học /Python SELF VI /Các ngoại lệ phổ biến

Các ngoại lệ phổ biến

Python SELF VI
Mức độ , Bài học
Có sẵn

2.1 Tạo ngoại lệ

Không thể đánh bại nó — hãy dẫn đầu. Nếu chúng ta không thể tránh sự xuất hiện của lỗi trong chương trình, chúng ta phải học cách kiểm soát chúng. Và để làm điều này, hãy học cách cố ý tạo ra các ngoại lệ.

Ví dụ đơn giản nhất về ngoại lệ — là chia cho không. Và chương trình cũng đơn giản:


x = 100 / 0
        

Mã này sẽ chạy với lỗi:


Traceback (most recent call last):
    File "", line 1, in 
         x = 100 / 0
        ~~~^~   
ZeroDivisionError: division by zero
        

ZeroDivisionError — là tên của ngoại lệ, còn division by zero — là mô tả ngắn gọn của nó. Python cũng sẽ thông báo số dòng mà ngoại lệ này xuất hiện.

Sai lệch kiểu dữ liệu

Dĩ nhiên, có thể xảy ra các ngoại lệ khác. Ví dụ, khi cố gắng cộng chuỗi và số:


s = "100" + 100
        

Sẽ xảy ra ngoại lệ TypeError:


Traceback (most recent call last):
    File "", line 1, in 
TypeError: unsupported operand type(s) for +: 'str' and 'int'
        

Vượt ngoài danh sách

Một lỗi rất phổ biến khác gây ra ngoại lệ — là cố gắng truy cập vào một phần tử không tồn tại trong danh sách:


my_list = [1, 2, 3]
print(my_list[10])
        

Sẽ xảy ra ngoại lệ IndexError:


Traceback (most recent call last):
    print(my_list[10])
        ~~~~~~~^^^^
IndexError: list index out of range
        

Có bao nhiêu ngoại lệ tất cả? Có hàng ngàn loại ngoại lệ khác nhau. Hơn thế nữa, bạn có thể tự tạo ra những ngoại lệ của mình nếu cảm thấy những cái hiện có không đủ để mô tả một tình huống cụ thể nào đó. Tuy nhiên, không có nhiều ngoại lệ phổ biến.

2.2 Danh sách các ngoại lệ phổ biến nhất

Có nhiều ngoại lệ, nhưng với bạn là người mới bắt đầu, sẽ rất hữu ích để biết về những ngoại lệ phổ biến nhất. Dưới đây là bảng với chúng:

Ngữ cảnh Mô tả
Exception Lớp cơ bản cho tất cả các ngoại lệ.
IndexError Xảy ra khi truy cập vào chỉ số không tồn tại trong một dãy (ví dụ: danh sách hoặc bộ dữ liệu).
KeyError Xảy ra khi truy cập vào một khóa không tồn tại trong từ điển.
NameError Xảy ra khi truy cập vào một biến không tồn tại.
RuntimeError Xảy ra khi một lỗi chung xảy ra trong quá trình chạy, không thuộc về các loại ngoại lệ khác.
StopIteration Xảy ra để báo hiệu kết thúc của một vòng lặp.
SyntaxError Xảy ra khi có lỗi cú pháp trong mã.
IndentationError Xảy ra khi có lỗi thụt lề trong mã (một loại SyntaxError).
TabError Xảy ra khi kết hợp tab và dấu cách cho thụt lề (một loại IndentationError).
TypeError Xảy ra khi cố gắng thực hiện thao tác với các loại dữ liệu không tương thích.
UnboundLocalError Xảy ra khi truy cập vào biến cục bộ trước khi nó được khai báo (một loại NameError).
ValueError Xảy ra khi cung cấp cho một hàm hoặc thao tác một đối số có giá trị không đúng.
ZeroDivisionError Xảy ra khi chia cho không.

Có khả năng, bạn, như một người mới bắt đầu, sẽ gặp phải tất cả những lỗi này trong tháng đầu tiên của việc học. Và điều đó không có gì xấu — chỉ có học từ lỗi lầm.

2.3 Lỗi trong mã

Hãy xem xét thêm một vài tình huống khi mã gây ra lỗi, để bạn dễ dàng phát hiện hơn trong mã của mình:

IndentationError

Loại lỗi này xảy ra khi các thụt lề trong mã không đúng cách. Ví dụ, kết hợp tab và dấu cách hoặc số lượng thụt lề không đúng.


def example():
    print("Hello")
     print("World")  # Sai thụt lề gây ra IndentationError
        
example()
        

NameError


def example():
    print(undeclared_variable)  # Cố gắng sử dụng biến chưa khai báo gây ra NameError
        
example()
        

ValueError

Loại lỗi này xảy ra khi thao tác hoặc hàm nhận một đối số có kiểu đúng nhưng giá trị không phù hợp.


def example():
    int("abc")  # Cố gắng chuyển đổi chuỗi không phải số gây ra ValueError
        
example()
        

KeyError

Loại lỗi này xảy ra khi chương trình cố gắng truy cập vào một khóa không tồn tại trong từ điển.


def example():
    my_dict = {"a": 1, "b": 2}
    print(my_dict["c"])  # Cố gắng truy cập vào khóa không tồn tại gây ra KeyError
        
example()
        

SyntaxError

Loại lỗi này xảy ra khi có lỗi cú pháp trong mã, tức là mã không tuân thủ ngữ pháp của ngôn ngữ Python.


def example():
    eval("if True print('Hello')")  # Sai cú pháp gây ra SyntaxError
        
example()
        

Ai được cảnh báo, người đó được trang bị. Giờ bạn có thể nhận ra và tạo ra các tình huống gây ra lỗi. Đây là lúc học cách xử lý các lỗi này.

2
Nhiệm vụ
Python SELF VI, mức độ, bài học
Đã khóa
Tham chiếu đến một biến không tồn tại.
Tham chiếu đến một biến không tồn tại.
2
Nhiệm vụ
Python SELF VI, mức độ, bài học
Đã khóa
Lỗi cú pháp.
Lỗi cú pháp.
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION