Các ngoại lệ được đưa ra khi chương trình gặp lỗi trong quá trình thực thi. Chúng làm gián đoạn dòng chảy bình thường của chương trình và thường kết thúc nó đột ngột. Để tránh điều này, bạn có thể bắt chúng và xử lý chúng một cách thích hợp
Bạn có thể đã nhìn thấy chúng trong các dự án lập trình của mình
Nếu bạn đã từng thử chia cho 0 trong Python, bạn hẳn đã thấy thông báo lỗi này
>>> a = 5/0
Traceback [most recent call last]:
File "", line 1, in
a = 5/0
ZeroDivisionError: division by zero
Nếu bạn cố lập chỉ mục một chuỗi có chỉ mục không hợp lệ, bạn chắc chắn nhận được thông báo lỗi này
>>> a = "Hello, World"
>>> a[456]
Traceback [most recent call last]:
File "", line 1, in
a[456]
IndexError: string index out of range
Đây là những ví dụ về ngoại lệ
🔹 Ngoại lệ phổ biến
Có nhiều loại ngoại lệ khác nhau và tất cả chúng đều được nêu ra trong các tình huống cụ thể. Một số trường hợp ngoại lệ mà bạn rất có thể sẽ thấy khi làm việc với các dự án của mình là
- IndexError - tăng lên khi bạn cố gắng lập chỉ mục một danh sách, bộ dữ liệu hoặc chuỗi vượt quá ranh giới được phép. Ví dụ
>>> num = [1, 2, 6, 5]
>>> num[56546546]
Traceback [most recent call last]:
File "", line 1, in
num[56546546]
IndexError: list index out of range
- KeyError - xuất hiện khi bạn cố gắng truy cập giá trị của khóa không tồn tại trong từ điển. Ví dụ
>>> students = {"Nora": 15, "Gino": 30}
>>> students["Lisa"]
Traceback [most recent call last]:
File "", line 1, in
students["Lisa"]
KeyError: 'Lisa'
- NameError - xuất hiện khi tên mà bạn đang tham chiếu trong mã không tồn tại. Ví dụ
>>> a = b
Traceback [most recent call last]:
File "", line 1, in
a = b
NameError: name 'b' is not defined
- TypeError - tăng lên khi một thao tác hoặc chức năng được áp dụng cho một đối tượng thuộc loại không phù hợp. Ví dụ
>>> [5, 6, 7] * [1, 2, 3]
Traceback [most recent call last]:
File "", line 1, in
[5, 6, 7] * [1, 2, 3]
TypeError: can't multiply sequence by non-int of type 'tuple'
- ZeroDivisionError - tăng lên khi bạn cố gắng chia cho số không
>>> a = 5/0
Traceback [most recent call last]:
File "", line 1, in
a = 5/0
ZeroDivisionError: division by zero
💡 mẹo. Để tìm hiểu thêm về các loại ngoại lệ tích hợp khác, vui lòng tham khảo bài viết này trong Tài liệu Python
🔸 Cấu tạo của một ngoại lệ
Tôi chắc rằng bạn đã nhận thấy một khuôn mẫu chung trong các thông báo lỗi này. Hãy chia nhỏ cấu trúc chung của chúng từng mảnh
Đầu tiên, chúng tôi tìm thấy dòng này [xem bên dưới]. Truy nguyên về cơ bản là một danh sách nêu chi tiết các lệnh gọi hàm đã được thực hiện trước khi ngoại lệ được đưa ra
Traceback giúp bạn trong quá trình gỡ lỗi vì bạn có thể phân tích chuỗi lệnh gọi hàm dẫn đến ngoại lệ
Traceback [most recent call last]:
Then, we see this line [see below] with the path to the file and the line that raised the exception. In this case, the path was the Python shell since the example was executed directly in IDLE.
________số 8💡 Tip: If the line that raised the exception belongs to a function, is replaced by the name of the function.
Cuối cùng, chúng tôi thấy một thông báo mô tả nêu chi tiết loại ngoại lệ và cung cấp thông tin bổ sung để giúp chúng tôi gỡ lỗi mã
NameError: name 'a' is not defined
2️⃣ Xử lý ngoại lệ. Mục đích và bối cảnh
Bạn có thể yêu cầu. tại sao tôi muốn xử lý các trường hợp ngoại lệ?
🔹 Ví dụ. Đầu vào của người dùng
Hãy tưởng tượng điều gì sẽ xảy ra nếu người dùng đang làm việc với chương trình của bạn nhập một thông tin đầu vào không hợp lệ. Điều này sẽ đưa ra một ngoại lệ vì một hoạt động không hợp lệ đã được thực hiện trong quá trình
Nếu chương trình của bạn không xử lý điều này một cách chính xác, nó sẽ bị lỗi đột ngột và người dùng sẽ có trải nghiệm rất thất vọng với sản phẩm của bạn
Nhưng nếu bạn xử lý ngoại lệ, bạn sẽ có thể cung cấp giải pháp thay thế để cải thiện trải nghiệm của người dùng
Có lẽ bạn có thể hiển thị một thông báo mô tả yêu cầu người dùng nhập thông tin đầu vào hợp lệ hoặc bạn có thể cung cấp giá trị mặc định cho thông tin đầu vào. Tùy thuộc vào ngữ cảnh, bạn có thể chọn phải làm gì khi điều này xảy ra và đây là điều kỳ diệu của việc xử lý lỗi. Nó có thể tiết kiệm trong ngày khi những điều bất ngờ xảy ra. ⭐️
🔸 Điều gì xảy ra ở hậu trường?
Về cơ bản, khi chúng tôi xử lý một ngoại lệ, chúng tôi đang nói cho chương trình biết phải làm gì nếu ngoại lệ đó được đưa ra. Trong trường hợp đó, luồng thực thi "thay thế" sẽ đến giải cứu. Nếu không có ngoại lệ nào được đưa ra, mã sẽ chạy như mong đợi
3️⃣ Thời gian viết mã. Sự cố gắng. ngoại trừ Tuyên bố
Bây giờ bạn đã biết ngoại lệ là gì và tại sao chúng ta nên xử lý chúng, chúng ta sẽ bắt đầu đi sâu vào các công cụ tích hợp sẵn mà ngôn ngữ Python cung cấp cho mục đích này
Đầu tiên, chúng ta có tuyên bố cơ bản nhất. thử. ngoại trừ
Hãy minh họa điều này bằng một ví dụ đơn giản. Chúng tôi có một chương trình nhỏ yêu cầu người dùng nhập tên của một học sinh để hiển thị tuổi của học sinh đó
>>> a = "Hello, World"
>>> a[456]
Traceback [most recent call last]:
File "", line 1, in
a[456]
IndexError: string index out of range
0Lưu ý cách chúng tôi không xác thực đầu vào của người dùng vào lúc này, vì vậy người dùng có thể nhập các giá trị không hợp lệ [tên không có trong từ điển] và hậu quả sẽ rất thảm khốc vì chương trình sẽ bị lỗi nếu KeyError được đưa ra
>>> a = "Hello, World"
>>> a[456]
Traceback [most recent call last]:
File "", line 1, in
a[456]
IndexError: string index out of range
1🔹 Cú pháp
Chúng tôi có thể xử lý việc này một cách độc đáo bằng cách sử dụng thử. ngoại trừ. Đây là cú pháp cơ bản
Trong ví dụ của chúng tôi, chúng tôi sẽ thêm thử. câu lệnh ngoại trừ trong hàm. Hãy chia nhỏ điều này từng mảnh
>>> a = "Hello, World"
>>> a[456]
Traceback [most recent call last]:
File "", line 1, in
a[456]
IndexError: string index out of range
2Nếu chúng ta "phóng to", chúng ta sẽ thấy thử. tuyên bố ngoại trừ
>>> a = "Hello, World"
>>> a[456]
Traceback [most recent call last]:
File "", line 1, in
a[456]
IndexError: string index out of range
3- Khi hàm được gọi, mệnh đề try sẽ chạy. Nếu không có ngoại lệ nào được đưa ra, chương trình sẽ chạy như mong đợi
- Nhưng nếu một ngoại lệ được nêu ra trong mệnh đề try, luồng thực thi sẽ ngay lập tức chuyển sang mệnh đề except để xử lý ngoại lệ đó
💡 Lưu ý. Mã này được chứa trong vòng lặp while để tiếp tục yêu cầu người dùng nhập nếu giá trị không hợp lệ. Đây là một ví dụ
>>> a = "Hello, World"
>>> a[456]
Traceback [most recent call last]:
File "", line 1, in
a[456]
IndexError: string index out of range
4Điều này là tuyệt vời, phải không?
Hiện tại, chúng tôi đang xử lý tất cả các trường hợp ngoại lệ có thể xảy ra với cùng một điều khoản ngoại trừ. Nhưng nếu chúng ta chỉ muốn xử lý một loại ngoại lệ cụ thể thì sao?
🔸 Nắm bắt các ngoại lệ cụ thể
Vì không phải tất cả các loại ngoại lệ đều được xử lý theo cùng một cách, nên chúng tôi có thể chỉ định loại ngoại lệ nào chúng tôi muốn xử lý bằng cú pháp này
Đây là một ví dụ. Chúng tôi đang xử lý ngoại lệ ZeroDivisionError trong trường hợp người dùng nhập số 0 làm mẫu số
>>> a = "Hello, World"
>>> a[456]
Traceback [most recent call last]:
File "", line 1, in
a[456]
IndexError: string index out of range
5Đây sẽ là kết quả
>>> a = "Hello, World"
>>> a[456]
Traceback [most recent call last]:
File "", line 1, in
a[456]
IndexError: string index out of range
6Chúng tôi đang xử lý việc này một cách chính xác. Nhưng mà. nếu một loại ngoại lệ khác được đưa ra, chương trình sẽ không xử lý nó một cách duyên dáng
Ở đây chúng ta có một ví dụ về ValueError vì một trong các giá trị là float, không phải int
>>> a = "Hello, World"
>>> a[456]
Traceback [most recent call last]:
File "", line 1, in
a[456]
IndexError: string index out of range
7Chúng tôi có thể tùy chỉnh cách chúng tôi xử lý các loại ngoại lệ khác nhau
🔹 Nhiều mệnh đề ngoại trừ
Để làm điều này, chúng ta cần thêm nhiều mệnh đề
>>> students = {"Nora": 15, "Gino": 30}
>>> students["Lisa"]
Traceback [most recent call last]:
File "", line 1, in
students["Lisa"]
KeyError: 'Lisa'
5 để xử lý các loại ngoại lệ khác nhau theo cách khác nhauTheo Tài liệu Python
Một câu lệnh thử có thể có nhiều hơn một mệnh đề ngoại trừ, để chỉ định các trình xử lý cho các ngoại lệ khác nhau. Nhiều nhất một trình xử lý sẽ được thực thi
Trong ví dụ này, chúng tôi có hai mệnh đề ngoại trừ. Một trong số chúng xử lý ZeroDivisionError và cái còn lại xử lý ValueError, hai loại ngoại lệ có thể được đưa ra trong khối thử này
>>> a = "Hello, World"
>>> a[456]
Traceback [most recent call last]:
File "", line 1, in
a[456]
IndexError: string index out of range
8💡 Mẹo. Bạn phải xác định loại ngoại lệ nào có thể được đưa ra trong khối thử để xử lý chúng một cách thích hợp
🔸 Nhiều ngoại lệ, một điều khoản ngoại trừ
Bạn cũng có thể chọn xử lý các loại ngoại lệ khác nhau với cùng một mệnh đề ngoại trừ
Theo Tài liệu Python
Một mệnh đề ngoại trừ có thể đặt tên cho nhiều ngoại lệ dưới dạng một bộ trong ngoặc đơn
Đây là một ví dụ mà chúng tôi bắt gặp hai trường hợp ngoại lệ [ZeroDivisionError và ValueError] với cùng một mệnh đề
>>> students = {"Nora": 15, "Gino": 30}
>>> students["Lisa"]
Traceback [most recent call last]:
File "", line 1, in
students["Lisa"]
KeyError: 'Lisa'
5>>> a = "Hello, World"
>>> a[456]
Traceback [most recent call last]:
File "", line 1, in
a[456]
IndexError: string index out of range
9Đầu ra sẽ giống nhau đối với hai loại ngoại lệ vì chúng được xử lý bởi cùng một mệnh đề ngoại trừ
>>> num = [1, 2, 6, 5]
>>> num[56546546]
Traceback [most recent call last]:
File "", line 1, in
num[56546546]
IndexError: list index out of range
0>>> num = [1, 2, 6, 5]
>>> num[56546546]
Traceback [most recent call last]:
File "", line 1, in
num[56546546]
IndexError: list index out of range
1🔹 Xử lý các ngoại lệ do hàm được gọi trong mệnh đề try
Một khía cạnh thú vị của việc xử lý ngoại lệ là nếu một ngoại lệ được nêu ra trong một hàm mà trước đó đã được gọi trong mệnh đề try của một hàm khác và bản thân hàm đó không xử lý nó, thì người gọi sẽ xử lý nó nếu có một mệnh đề except phù hợp
Theo Tài liệu Python
Trình xử lý ngoại lệ không chỉ xử lý ngoại lệ nếu chúng xuất hiện ngay trong mệnh đề try, mà còn nếu chúng xảy ra bên trong các hàm được gọi [thậm chí gián tiếp] trong mệnh đề try
Hãy xem một ví dụ để minh họa điều này
>>> num = [1, 2, 6, 5]
>>> num[56546546]
Traceback [most recent call last]:
File "", line 1, in
num[56546546]
IndexError: list index out of range
2Chúng ta có hàm
>>> students = {"Nora": 15, "Gino": 30}
>>> students["Lisa"]
Traceback [most recent call last]:
File "", line 1, in
students["Lisa"]
KeyError: 'Lisa'
7 và hàm >>> students = {"Nora": 15, "Gino": 30}
>>> students["Lisa"]
Traceback [most recent call last]:
File "", line 1, in
students["Lisa"]
KeyError: 'Lisa'
8. >>> students = {"Nora": 15, "Gino": 30}
>>> students["Lisa"]
Traceback [most recent call last]:
File "", line 1, in
students["Lisa"]
KeyError: 'Lisa'
7 gọi >>> students = {"Nora": 15, "Gino": 30}
>>> students["Lisa"]
Traceback [most recent call last]:
File "", line 1, in
students["Lisa"]
KeyError: 'Lisa'
8 trong mệnh đề try. Với đối số 50, >>> students = {"Nora": 15, "Gino": 30}
>>> students["Lisa"]
Traceback [most recent call last]:
File "", line 1, in
students["Lisa"]
KeyError: 'Lisa'
8 sẽ gây ra lỗi IndexError vì chỉ số 50 không hợp lệ đối với chuỗi aNhưng bản thân
>>> students = {"Nora": 15, "Gino": 30}
>>> students["Lisa"]
Traceback [most recent call last]:
File "", line 1, in
students["Lisa"]
KeyError: 'Lisa'
8 không xử lý ngoại lệ. Lưu ý làm thế nào không có thử. câu lệnh ngoại trừ trong hàm >>> students = {"Nora": 15, "Gino": 30}
>>> students["Lisa"]
Traceback [most recent call last]:
File "", line 1, in
students["Lisa"]
KeyError: 'Lisa'
8. Vì nó không xử lý ngoại lệ nên nó "gửi" ngoại lệ đó tới >>> students = {"Nora": 15, "Gino": 30}
>>> students["Lisa"]
Traceback [most recent call last]:
File "", line 1, in
students["Lisa"]
KeyError: 'Lisa'
7 để xem liệu nó có thể xử lý ngoại lệ hay không, như bạn có thể thấy trong sơ đồ bên dướiVì f biết cách xử lý IndexError nên tình huống được xử lý một cách khéo léo và đây là kết quả
>>> num = [1, 2, 6, 5]
>>> num[56546546]
Traceback [most recent call last]:
File "", line 1, in
num[56546546]
IndexError: list index out of range
3💡 Lưu ý. Nếu
>>> students = {"Nora": 15, "Gino": 30}
>>> students["Lisa"]
Traceback [most recent call last]:
File "", line 1, in
students["Lisa"]
KeyError: 'Lisa'
7 không xử lý ngoại lệ, chương trình sẽ kết thúc đột ngột với thông báo lỗi mặc định cho IndexError🔸 Truy cập chi tiết cụ thể về ngoại lệ
Ngoại lệ là các đối tượng trong Python, vì vậy bạn có thể gán ngoại lệ đã được nâng lên thành một biến. Bằng cách này, bạn có thể in mô tả mặc định của ngoại lệ và truy cập các đối số của nó
Theo Tài liệu Python
Mệnh đề ngoại trừ có thể chỉ định một biến sau tên ngoại lệ. Biến được liên kết với một thể hiện ngoại lệ với các đối số được lưu trữ trong thể hiện. tranh luận
Ở đây chúng tôi có một ví dụ [xem bên dưới] khi chúng tôi gán thể hiện của
>>> a = b
Traceback [most recent call last]:
File "", line 1, in
a = b
NameError: name 'b' is not defined
6 cho biến >>> a = b
Traceback [most recent call last]:
File "", line 1, in
a = b
NameError: name 'b' is not defined
7. Sau đó, chúng ta có thể sử dụng biến này trong mệnh đề ngoại trừ để truy cập loại ngoại lệ, thông báo và đối số của nó>>> num = [1, 2, 6, 5]
>>> num[56546546]
Traceback [most recent call last]:
File "", line 1, in
num[56546546]
IndexError: list index out of range
4Đầu ra tương ứng sẽ là
>>> num = [1, 2, 6, 5]
>>> num[56546546]
Traceback [most recent call last]:
File "", line 1, in
num[56546546]
IndexError: list index out of range
5💡 Mẹo. Nếu bạn đã quen thuộc với các phương thức đặc biệt, theo Tài liệu Python. "để thuận tiện, trường hợp ngoại lệ xác định
>>> a = b
Traceback [most recent call last]:
File "", line 1, in
a = b
NameError: name 'b' is not defined
8 để các đối số có thể được in trực tiếp mà không cần phải tham chiếu đến >>> a = b
Traceback [most recent call last]:
File "", line 1, in
a = b
NameError: name 'b' is not defined
9. "4️⃣ Bây giờ hãy thêm. Mệnh đề "khác"
Mệnh đề
>>> [5, 6, 7] * [1, 2, 3]
Traceback [most recent call last]:
File "", line 1, in
[5, 6, 7] * [1, 2, 3]
TypeError: can't multiply sequence by non-int of type 'tuple'
0 là tùy chọn, nhưng nó là một công cụ tuyệt vời vì nó cho phép chúng ta thực thi mã chỉ nên chạy nếu không có ngoại lệ nào được đưa ra trong mệnh đề tryTheo Tài liệu Python
Câu lệnh1 …>>> [5, 6, 7] * [1, 2, 3] Traceback [most recent call last]: File "", line 1, in [5, 6, 7] * [1, 2, 3] TypeError: can't multiply sequence by non-int of type 'tuple'
5 có một mệnh đề tùy chọn khác, khi xuất hiện, phải tuân theo tất cả các mệnh đề ngoại trừ. Nó hữu ích cho mã phải được thực thi nếu mệnh đề thử không đưa ra ngoại lệ>>> students = {"Nora": 15, "Gino": 30} >>> students["Lisa"] Traceback [most recent call last]: File "", line 1, in students["Lisa"] KeyError: 'Lisa'
Dưới đây là một ví dụ về việc sử dụng mệnh đề
>>> [5, 6, 7] * [1, 2, 3]
Traceback [most recent call last]:
File "", line 1, in
[5, 6, 7] * [1, 2, 3]
TypeError: can't multiply sequence by non-int of type 'tuple'
0>>> num = [1, 2, 6, 5]
>>> num[56546546]
Traceback [most recent call last]:
File "", line 1, in
num[56546546]
IndexError: list index out of range
6Nếu không có ngoại lệ nào được đưa ra, kết quả sẽ được in
>>> num = [1, 2, 6, 5]
>>> num[56546546]
Traceback [most recent call last]:
File "", line 1, in
num[56546546]
IndexError: list index out of range
7Nhưng nếu một ngoại lệ được đưa ra, kết quả sẽ không được in
>>> num = [1, 2, 6, 5]
>>> num[56546546]
Traceback [most recent call last]:
File "", line 1, in
num[56546546]
IndexError: list index out of range
8💡 Mẹo. Theo Tài liệu Python
Việc sử dụng mệnh đề0 tốt hơn là thêm mã bổ sung vào mệnh đề>>> [5, 6, 7] * [1, 2, 3] Traceback [most recent call last]: File "", line 1, in [5, 6, 7] * [1, 2, 3] TypeError: can't multiply sequence by non-int of type 'tuple'
1 vì nó tránh vô tình bắt gặp một ngoại lệ không được đưa ra bởi mã được bảo vệ bởi câu lệnh>>> [5, 6, 7] * [1, 2, 3] Traceback [most recent call last]: File "", line 1, in [5, 6, 7] * [1, 2, 3] TypeError: can't multiply sequence by non-int of type 'tuple'
1 …>>> [5, 6, 7] * [1, 2, 3] Traceback [most recent call last]: File "", line 1, in [5, 6, 7] * [1, 2, 3] TypeError: can't multiply sequence by non-int of type 'tuple'
5>>> students = {"Nora": 15, "Gino": 30} >>> students["Lisa"] Traceback [most recent call last]: File "", line 1, in students["Lisa"] KeyError: 'Lisa'
5️⃣ Mệnh đề "cuối cùng"
Mệnh đề cuối cùng là mệnh đề cuối cùng trong chuỗi này. Nó là tùy chọn, nhưng nếu bạn bao gồm nó, thì nó phải là mệnh đề cuối cùng trong chuỗi. Mệnh đề
>>> [5, 6, 7] * [1, 2, 3]
Traceback [most recent call last]:
File "", line 1, in
[5, 6, 7] * [1, 2, 3]
TypeError: can't multiply sequence by non-int of type 'tuple'
8 luôn được thực thi, ngay cả khi một ngoại lệ được đưa ra trong mệnh đề try. Theo Tài liệu Python
Nếu có mệnh đề8, mệnh đề>>> [5, 6, 7] * [1, 2, 3] Traceback [most recent call last]: File "", line 1, in [5, 6, 7] * [1, 2, 3] TypeError: can't multiply sequence by non-int of type 'tuple'
8 sẽ thực thi như tác vụ cuối cùng trước khi câu lệnh>>> [5, 6, 7] * [1, 2, 3] Traceback [most recent call last]: File "", line 1, in [5, 6, 7] * [1, 2, 3] TypeError: can't multiply sequence by non-int of type 'tuple'
1 hoàn thành. Mệnh đề>>> [5, 6, 7] * [1, 2, 3] Traceback [most recent call last]: File "", line 1, in [5, 6, 7] * [1, 2, 3] TypeError: can't multiply sequence by non-int of type 'tuple'
8 chạy cho dù câu lệnh>>> [5, 6, 7] * [1, 2, 3] Traceback [most recent call last]: File "", line 1, in [5, 6, 7] * [1, 2, 3] TypeError: can't multiply sequence by non-int of type 'tuple'
1 có tạo ra ngoại lệ hay không>>> [5, 6, 7] * [1, 2, 3] Traceback [most recent call last]: File "", line 1, in [5, 6, 7] * [1, 2, 3] TypeError: can't multiply sequence by non-int of type 'tuple'
Mệnh đề cuối cùng thường được sử dụng để thực hiện các hành động "dọn dẹp" luôn được hoàn thành. Ví dụ: nếu chúng tôi đang làm việc với một tệp trong mệnh đề try, chúng tôi sẽ luôn cần đóng tệp, ngay cả khi một ngoại lệ được đưa ra khi chúng tôi đang làm việc với dữ liệu
Đây là một ví dụ về mệnh đề cuối cùng
>>> num = [1, 2, 6, 5]
>>> num[56546546]
Traceback [most recent call last]:
File "", line 1, in
num[56546546]
IndexError: list index out of range
9Đây là kết quả khi không có ngoại lệ nào được đưa ra
>>> students = {"Nora": 15, "Gino": 30}
>>> students["Lisa"]
Traceback [most recent call last]:
File "", line 1, in
students["Lisa"]
KeyError: 'Lisa'
0Đây là đầu ra khi một ngoại lệ được đưa ra
>>> students = {"Nora": 15, "Gino": 30}
>>> students["Lisa"]
Traceback [most recent call last]:
File "", line 1, in
students["Lisa"]
KeyError: 'Lisa'
1Lưu ý cách mệnh đề
>>> [5, 6, 7] * [1, 2, 3]
Traceback [most recent call last]:
File "", line 1, in
[5, 6, 7] * [1, 2, 3]
TypeError: can't multiply sequence by non-int of type 'tuple'
8 luôn chạy❗️Quan trọng. hãy nhớ rằng mệnh đề
>>> [5, 6, 7] * [1, 2, 3]
Traceback [most recent call last]:
File "", line 1, in
[5, 6, 7] * [1, 2, 3]
TypeError: can't multiply sequence by non-int of type 'tuple'
0 và mệnh đề >>> [5, 6, 7] * [1, 2, 3]
Traceback [most recent call last]:
File "", line 1, in
[5, 6, 7] * [1, 2, 3]
TypeError: can't multiply sequence by non-int of type 'tuple'
8 là tùy chọn, nhưng nếu bạn quyết định bao gồm cả hai, thì mệnh đề cuối cùng phải là mệnh đề cuối cùng trong chuỗi6️⃣ Tăng ngoại lệ
Bây giờ bạn đã biết cách xử lý ngoại lệ trong Python, tôi muốn chia sẻ với bạn thủ thuật hữu ích này. bạn cũng có thể chọn thời điểm đưa ra các ngoại lệ trong mã của mình
Điều này có thể hữu ích cho các tình huống nhất định. Hãy xem làm thế nào bạn có thể làm điều này
Dòng này sẽ tăng ValueError với thông báo tùy chỉnh
Ở đây chúng ta có một ví dụ [xem bên dưới] về hàm in giá trị của các mục trong danh sách hoặc bộ hoặc các ký tự trong chuỗi. Nhưng bạn đã quyết định rằng bạn muốn danh sách, bộ hoặc chuỗi có độ dài 5. Bạn bắt đầu hàm với câu lệnh if để kiểm tra xem độ dài của đối số
>>> a = 5/0
Traceback [most recent call last]:
File "", line 1, in
a = 5/0
ZeroDivisionError: division by zero
7 có phải là 5 không. Nếu không, một ngoại lệ ValueError được đưa ra>>> students = {"Nora": 15, "Gino": 30}
>>> students["Lisa"]
Traceback [most recent call last]:
File "", line 1, in
students["Lisa"]
KeyError: 'Lisa'
2Đầu ra sẽ là
>>> students = {"Nora": 15, "Gino": 30}
>>> students["Lisa"]
Traceback [most recent call last]:
File "", line 1, in
students["Lisa"]
KeyError: 'Lisa'
3Lưu ý cách dòng cuối cùng hiển thị thông báo mô tả
>>> students = {"Nora": 15, "Gino": 30}
>>> students["Lisa"]
Traceback [most recent call last]:
File "", line 1, in
students["Lisa"]
KeyError: 'Lisa'
4Sau đó, bạn có thể chọn cách xử lý ngoại lệ bằng cách thử. tuyên bố ngoại trừ. Bạn có thể thêm một mệnh đề khác và/hoặc một mệnh đề cuối cùng. Bạn có thể tùy chỉnh nó để phù hợp với nhu cầu của bạn
🔹 Tài nguyên hữu ích
- ngoại lệ
- Xử lý ngoại lệ
- Xác định hành động dọn dẹp
Tôi hy vọng bạn thích đọc bài viết của tôi và thấy nó hữu ích. Bây giờ bạn đã có các công cụ cần thiết để xử lý các ngoại lệ trong Python và bạn có thể sử dụng chúng để tạo lợi thế cho mình khi viết mã Python. ? . Bạn có thể theo dõi tôi trên Twitter
⭐️ Bạn có thể thưởng thức các bài báo /tin tức về FreeCodeCamp khác của tôi
- Trình trang trí @property trong Python. Các trường hợp sử dụng, ưu điểm và cú pháp của nó
- Cấu trúc dữ liệu 101. Đồ thị — Giới thiệu trực quan cho người mới bắt đầu
- Cấu trúc dữ liệu 101. Mảng — Giới thiệu trực quan cho người mới bắt đầu
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
Nhà phát triển, nhà văn kỹ thuật và người tạo nội dung @freeCodeCamp. Tôi chạy freeCodeCamp. org Kênh YouTube Español
Nếu bạn đọc đến đây, hãy tweet cho tác giả để cho họ thấy bạn quan tâm. Tweet một lời cảm ơn
Học cách viết mã miễn phí. Chương trình giảng dạy mã nguồn mở của freeCodeCamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu