Tại sao tôi gặp lỗi thời gian chạy trong python?

Trong Python, tất cả các ngoại lệ phải là thể hiện của một lớp bắt nguồn từ

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
00. Trong câu lệnh
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
01 có mệnh đề
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
02 đề cập đến một lớp cụ thể, mệnh đề đó cũng xử lý mọi lớp ngoại lệ bắt nguồn từ lớp đó [nhưng không phải các lớp ngoại lệ mà nó bắt nguồn từ đó]. Hai lớp ngoại lệ không liên quan thông qua phân lớp không bao giờ tương đương, ngay cả khi chúng có cùng tên

Các ngoại lệ tích hợp được liệt kê bên dưới có thể được tạo bởi trình thông dịch hoặc các hàm tích hợp. Trừ khi được đề cập, chúng có một "giá trị liên quan" cho biết nguyên nhân chi tiết của lỗi. Đây có thể là một chuỗi hoặc một bộ gồm nhiều mục thông tin [e. g. , một mã lỗi và một chuỗi giải thích mã]. Giá trị được liên kết thường được truyền dưới dạng đối số cho hàm tạo của lớp ngoại lệ

Mã người dùng có thể tăng ngoại lệ tích hợp. Điều này có thể được sử dụng để kiểm tra một trình xử lý ngoại lệ hoặc để báo cáo một tình trạng lỗi “giống như” tình huống mà trình thông dịch đưa ra cùng một ngoại lệ;

Các lớp ngoại lệ tích hợp có thể được phân lớp để xác định các ngoại lệ mới; . Thông tin thêm về cách xác định ngoại lệ có sẵn trong Hướng dẫn Python bên dưới Ngoại lệ do người dùng định nghĩa .

Bối cảnh ngoại lệ¶

Khi đưa ra một ngoại lệ mới trong khi một ngoại lệ khác đang được xử lý, thuộc tính

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
0 của ngoại lệ mới sẽ tự động được đặt thành ngoại lệ được xử lý. Một ngoại lệ có thể được xử lý khi một mệnh đề
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
02 hoặc
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
2, hoặc một câu lệnh
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
3, được sử dụng

Bối cảnh ngoại lệ tiềm ẩn này có thể được bổ sung bằng một nguyên nhân rõ ràng bằng cách sử dụng

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
4 với
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
5

raise new_exc from original_exc

Biểu thức theo sau

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
4 phải là một ngoại lệ hoặc
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
7. Nó sẽ được đặt là
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
8 đối với ngoại lệ được nêu ra. Đặt
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
8 cũng ngầm đặt thuộc tính
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
00 thành
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
01, để việc sử dụng
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
02 thay thế hiệu quả ngoại lệ cũ bằng ngoại lệ mới cho mục đích hiển thị [e. g. chuyển đổi
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
03 thành
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
04], trong khi để lại ngoại lệ cũ có sẵn trong
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
0 để xem xét nội tâm khi gỡ lỗi

Mã hiển thị truy nguyên mặc định hiển thị các ngoại lệ được xâu chuỗi này ngoài truy nguyên cho chính ngoại lệ đó. Một ngoại lệ được xâu chuỗi rõ ràng trong

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
8 luôn được hiển thị khi có mặt. Một ngoại lệ được xâu chuỗi hoàn toàn trong
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
0 chỉ được hiển thị nếu
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
8 là
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
7 và
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
00 là sai

Trong cả hai trường hợp, bản thân ngoại lệ luôn được hiển thị sau bất kỳ ngoại lệ chuỗi nào để dòng cuối cùng của truy nguyên luôn hiển thị ngoại lệ cuối cùng đã được nêu ra

Kế thừa từ các ngoại lệ tích hợp¶

Mã người dùng có thể tạo các lớp con kế thừa từ một loại ngoại lệ. Bạn chỉ nên phân lớp một loại ngoại lệ tại một thời điểm để tránh bất kỳ xung đột nào có thể xảy ra giữa cách cơ sở xử lý thuộc tính

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
11, cũng như do khả năng không tương thích về bố cục bộ nhớ

Chi tiết triển khai CPython. Hầu hết các ngoại lệ tích hợp đều được triển khai trong C để đạt hiệu quả, xem. Đối tượng/ngoại lệ. c. Một số có bố cục bộ nhớ tùy chỉnh khiến không thể tạo lớp con kế thừa từ nhiều loại ngoại lệ. Bố cục bộ nhớ của một loại là chi tiết triển khai và có thể thay đổi giữa các phiên bản Python, dẫn đến xung đột mới trong tương lai. Do đó, nên tránh hoàn toàn việc phân loại nhiều loại ngoại lệ

Các lớp cơ sở¶

Các ngoại lệ sau được sử dụng chủ yếu làm lớp cơ sở cho các ngoại lệ khác

ngoại lệ BaseException

Lớp cơ sở cho tất cả các ngoại lệ tích hợp. Nó không có nghĩa là được kế thừa trực tiếp bởi các lớp do người dùng định nghĩa [đối với điều đó, hãy sử dụng

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
03]. Nếu
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
13 được gọi trên một thể hiện của lớp này, thì biểu diễn của [các] đối số cho thể hiện đó được trả về hoặc chuỗi rỗng khi không có đối số

args

Bộ đối số được cung cấp cho hàm tạo ngoại lệ. Một số ngoại lệ tích hợp [như

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
14] yêu cầu một số đối số nhất định và gán ý nghĩa đặc biệt cho các phần tử của bộ dữ liệu này, trong khi các ngoại lệ khác thường chỉ được gọi với một chuỗi đưa ra thông báo lỗi

with_traceback[tb]

Phương thức này đặt tb làm truy nguyên mới cho ngoại lệ và trả về đối tượng ngoại lệ. Nó được sử dụng phổ biến hơn trước khi các tính năng chuỗi ngoại lệ của PEP 3134 khả dụng. Ví dụ sau đây cho thấy cách chúng ta có thể chuyển đổi phiên bản của

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
15 thành phiên bản của
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
16 trong khi vẫn giữ nguyên truy nguyên. Sau khi được nâng lên, khung hiện tại được đẩy lên truy nguyên của
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
16, như đã xảy ra với truy nguyên của
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
15 ban đầu nếu chúng tôi cho phép nó truyền tới người gọi

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]

add_note[ghi chú]

Thêm chuỗi

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
19 vào ghi chú của ngoại lệ xuất hiện trong truy nguyên tiêu chuẩn sau chuỗi ngoại lệ. Một
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
00 được nâng lên nếu
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
19 không phải là một chuỗi

Mới trong phiên bản 3. 11

__ghi chú__

Một danh sách các ghi chú của ngoại lệ này, đã được thêm vào với

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
02. Thuộc tính này được tạo khi
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
02 được gọi

Mới trong phiên bản 3. 11

ngoại lệ Ngoại lệ

Tất cả các ngoại lệ tích hợp, không thoát khỏi hệ thống đều bắt nguồn từ lớp này. Tất cả các ngoại lệ do người dùng định nghĩa cũng phải được bắt nguồn từ lớp này

ngoại lệ Lỗi số học

Lớp cơ sở dành cho những ngoại lệ tích hợp được đưa ra cho các lỗi số học khác nhau.

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
04,
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
05,
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
06

ngoại lệ Lỗi bộ đệm

Tăng lên khi không thể thực hiện thao tác liên quan đến bộ đệm .

ngoại lệ Lỗi tra cứu

Lớp cơ sở cho các ngoại lệ được nêu ra khi khóa hoặc chỉ mục được sử dụng trên ánh xạ hoặc chuỗi không hợp lệ.

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
07,
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
03. Điều này có thể được nêu trực tiếp bởi
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
09

Các ngoại lệ cụ thể¶

Các ngoại lệ sau đây là những ngoại lệ thường được nêu ra

ngoại lệ Lỗi khẳng định

Tăng lên khi một câu lệnh

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
000 không thành công

ngoại lệ Lỗi thuộc tính

Tăng lên khi tham chiếu thuộc tính [xem Tham chiếu thuộc tính ] hoặc gán không thành công. [Khi một đối tượng hoàn toàn không hỗ trợ tham chiếu thuộc tính hoặc gán thuộc tính, thì

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
00 được nâng lên. ]

Các thuộc tính

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
002 và
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
003 có thể được đặt bằng cách sử dụng các đối số chỉ từ khóa cho hàm tạo. Khi được đặt, chúng đại diện cho tên của thuộc tính đã cố gắng truy cập và đối tượng được truy cập cho thuộc tính đã nói, tương ứng

Đã thay đổi trong phiên bản 3. 10. Đã thêm thuộc tính

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
002 và
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
003.

ngoại lệ Lỗi EOF

Xảy ra khi hàm

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
006 chạm vào điều kiện cuối tệp [EOF] mà không đọc bất kỳ dữ liệu nào. [N. B. các phương thức
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
007 và
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
008 trả về một chuỗi rỗng khi chúng nhấn EOF. ]

ngoại lệ Lỗi dấu phẩy động

hiện không được sử dụng

ngoại lệ Thoát Trình tạo

Tăng lên khi máy phát điện hoặc coroutine bị đóng; . Nó kế thừa trực tiếp từ

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
00 thay vì
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
03 vì về mặt kỹ thuật nó không phải là lỗi.

ngoại lệ Lỗi nhập

Xảy ra khi câu lệnh

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
013 gặp sự cố khi tải một mô-đun. Cũng được nêu ra khi “từ danh sách” trong
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
014 có một cái tên không thể tìm thấy

Các thuộc tính

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
002 và
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
016 có thể được đặt bằng cách sử dụng các đối số chỉ từ khóa cho hàm tạo. Khi được đặt, chúng đại diện cho tên của mô-đun đã cố gắng nhập và đường dẫn đến bất kỳ tệp nào đã kích hoạt ngoại lệ, tương ứng

Đã thay đổi trong phiên bản 3. 3. Đã thêm thuộc tính

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
002 và
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
016.

ngoại lệ Lỗi ModuleNotFound

Một lớp con của

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
019 được nâng lên bởi
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
013 khi không thể định vị một mô-đun. Nó cũng được nêu ra khi
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
7 được tìm thấy trong
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
022

Mới trong phiên bản 3. 6

ngoại lệ Lỗi chỉ mục

Tăng lên khi một chuỗi con nằm ngoài phạm vi. [Các chỉ số của lát cắt được âm thầm cắt bớt để nằm trong phạm vi cho phép; nếu một chỉ mục không phải là số nguyên, thì

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
00 sẽ được nâng lên. ]

ngoại lệ Lỗi khóa

Xảy ra khi không tìm thấy khóa ánh xạ [từ điển] trong tập hợp các khóa hiện có

ngoại lệ Ngắt bàn phím

Tăng lên khi người dùng nhấn phím ngắt [thường là Control-C hoặc Delete]. Trong quá trình thực hiện, việc kiểm tra các ngắt được thực hiện thường xuyên. Ngoại lệ kế thừa từ

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
00 để không vô tình bị bắt bởi mã bắt
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
03 và do đó ngăn trình thông dịch thoát ra

Ghi chú

Việc bắt một

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
026 cần được xem xét đặc biệt. Bởi vì nó có thể được nâng lên ở những điểm không thể đoán trước, trong một số trường hợp, nó có thể khiến chương trình đang chạy ở trạng thái không nhất quán. Nói chung, tốt nhất là cho phép
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
026 kết thúc chương trình càng nhanh càng tốt hoặc tránh tăng hoàn toàn. [Xem Lưu ý về Trình xử lý Tín hiệu và Ngoại lệ . ]

ngoại lệ Lỗi bộ nhớ

Xảy ra khi một thao tác hết bộ nhớ nhưng tình huống vẫn có thể được giải quyết [bằng cách xóa một số đối tượng]. Giá trị được liên kết là một chuỗi cho biết loại thao tác [nội bộ] nào đã hết bộ nhớ. Lưu ý rằng do kiến ​​trúc quản lý bộ nhớ cơ bản [chức năng

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
028 của C], trình thông dịch không phải lúc nào cũng có thể khôi phục hoàn toàn sau tình huống này;

ngoại lệ Lỗi Tên

Xảy ra khi không tìm thấy tên cục bộ hoặc toàn cầu. Điều này chỉ áp dụng cho tên không đủ tiêu chuẩn. Giá trị được liên kết là một thông báo lỗi bao gồm tên không thể tìm thấy

Thuộc tính

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
002 có thể được đặt bằng cách sử dụng đối số chỉ từ khóa cho hàm tạo. Khi được đặt, nó đại diện cho tên của biến đã được cố gắng truy cập

Đã thay đổi trong phiên bản 3. 10. Đã thêm thuộc tính

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
002.

ngoại lệ NotImplementedError

Ngoại lệ này bắt nguồn từ

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
031. Trong các lớp cơ sở do người dùng định nghĩa, các phương thức trừu tượng sẽ đưa ra ngoại lệ này khi chúng yêu cầu các lớp dẫn xuất ghi đè phương thức hoặc trong khi lớp đang được phát triển để chỉ ra rằng việc triển khai thực vẫn cần được thêm vào

Ghi chú

Nó không nên được sử dụng để chỉ ra rằng một toán tử hoặc phương thức hoàn toàn không được hỗ trợ – trong trường hợp đó, hãy để toán tử / phương thức không được xác định hoặc, nếu là một lớp con, hãy đặt nó thành

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
7

Ghi chú

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
033 và
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
034 không thể thay thế cho nhau, mặc dù chúng có tên và mục đích giống nhau. Xem
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
034 để biết chi tiết về thời điểm sử dụng nó

ngoại lệ Lỗi hệ điều hành[[arg]]exception OSError[errno, strerror[, filename[, winerror[, filename2]]]]

Ngoại lệ này được đưa ra khi một chức năng hệ thống trả về một lỗi liên quan đến hệ thống, bao gồm các lỗi I/O chẳng hạn như “không tìm thấy tệp” hoặc “đĩa đầy” [không dành cho các loại đối số không hợp lệ hoặc các lỗi ngẫu nhiên khác]

Dạng thứ hai của hàm tạo đặt các thuộc tính tương ứng, được mô tả bên dưới. Các thuộc tính mặc định là

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
7 nếu không được chỉ định. Để tương thích ngược, nếu ba đối số được truyền, thuộc tính
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
11 chỉ chứa 2 bộ trong số hai đối số hàm tạo đầu tiên

Trình tạo thường thực sự trả về một lớp con của

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
14, như được mô tả trong các ngoại lệ của hệ điều hành bên dưới. Lớp con cụ thể phụ thuộc vào giá trị cuối cùng của
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
039. Hành vi này chỉ xảy ra khi xây dựng
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
14 trực tiếp hoặc thông qua bí danh và không được kế thừa khi phân lớp

errno

Mã lỗi số từ biến C

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
039

winerror

Trong Windows, điều này cung cấp cho bạn mã lỗi Windows gốc. Khi đó, thuộc tính

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
039 là bản dịch gần đúng, theo thuật ngữ POSIX, của mã lỗi gốc đó

Trong Windows, nếu đối số hàm tạo winerror là một số nguyên, thì thuộc tính

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
039 được xác định từ mã lỗi Windows và đối số errno bị bỏ qua. Trên các nền tảng khác, đối số winerror bị bỏ qua và thuộc tính
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
004 không tồn tại

strerror

Thông báo lỗi tương ứng, do hệ điều hành cung cấp. Nó được định dạng bởi các hàm C

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
005 trong POSIX và
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
006 trong Windows

tên tệptên tệp2

Đối với các trường hợp ngoại lệ liên quan đến đường dẫn hệ thống tệp [chẳng hạn như

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
007 hoặc
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
008],
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
009 là tên tệp được truyền cho hàm. Đối với các chức năng liên quan đến hai đường dẫn hệ thống tệp [chẳng hạn như ________ 000], ________ 001 tương ứng với tên tệp thứ hai được truyền cho chức năng

Đã thay đổi trong phiên bản 3. 3. _______002,

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
03,
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
04,
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
05,
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
06 và
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
07 đã được hợp nhất thành
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
14 và hàm tạo có thể trả về một phân lớp.

Đã thay đổi trong phiên bản 3. 4. Thuộc tính

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
009 bây giờ là tên tệp ban đầu được truyền cho hàm, thay vì tên được mã hóa hoặc giải mã từ mã hóa hệ thống tệp và trình xử lý lỗi. Also, the filename2 constructor argument and attribute was added.

ngoại lệ Lỗi tràn

Xảy ra khi kết quả của một phép toán số học quá lớn để được biểu diễn. Điều này không thể xảy ra đối với số nguyên [thà tăng

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
10 còn hơn bỏ]. Tuy nhiên, vì lý do lịch sử, OverflowError đôi khi được đưa ra đối với các số nguyên nằm ngoài phạm vi bắt buộc. Do thiếu tiêu chuẩn hóa việc xử lý ngoại lệ dấu chấm động trong C, nên hầu hết các hoạt động của dấu chấm động không được kiểm tra

ngoại lệ Lỗi đệ quy

Ngoại lệ này bắt nguồn từ

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
031. Nó được nâng lên khi trình thông dịch phát hiện vượt quá độ sâu đệ quy tối đa [xem
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
12]

Mới trong phiên bản 3. 5. Trước đây, một

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
031 đơn giản đã được nâng lên.

ngoại lệ Lỗi tham chiếu

Ngoại lệ này được đưa ra khi một proxy tham chiếu yếu, được tạo bởi hàm

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
14, được sử dụng để truy cập một thuộc tính của tham chiếu sau khi đã được thu gom rác. Để biết thêm thông tin về tài liệu tham khảo yếu, hãy xem mô-đun
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
15

ngoại lệ Lỗi thời gian chạy

Xảy ra khi phát hiện lỗi không thuộc bất kỳ danh mục nào khác. Giá trị được liên kết là một chuỗi cho biết chính xác điều gì đã xảy ra

ngoại lệ StopIteration

Được tạo bởi hàm tích hợp sẵn

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
16 và phương pháp lặp của
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
17 để báo hiệu rằng không có mục nào khác được tạo bởi trình lặp.

Đối tượng ngoại lệ có một thuộc tính duy nhất là

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
18, được đưa ra làm đối số khi xây dựng ngoại lệ và mặc định là
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
7

Khi hàm trình tạo hoặc coroutine trả về, a .

Nếu mã trình tạo trực tiếp hoặc gián tiếp tăng

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
20, thì mã đó được chuyển đổi thành
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
031 [giữ lại
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
20 làm nguyên nhân của ngoại lệ mới]

Đã thay đổi trong phiên bản 3. 3. Đã thêm thuộc tính

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
18 và khả năng cho các hàm tạo sử dụng nó để trả về một giá trị.

Đã thay đổi trong phiên bản 3. 5. Đã giới thiệu chuyển đổi RuntimeError qua

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
26, xem PEP 479.

Đã thay đổi trong phiên bản 3. 7. Bật PEP 479 cho tất cả mã theo mặc định. lỗi

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
20 xuất hiện trong trình tạo được chuyển thành lỗi
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
031.

ngoại lệ StopAsyncIteration

Phải được nâng lên bằng phương pháp

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
29 của đối tượng trình lặp không đồng bộ để dừng quá trình lặp.

Mới trong phiên bản 3. 5

ngoại lệ Lỗi cú pháp[thông báo , details]

Xảy ra khi trình phân tích cú pháp gặp lỗi cú pháp. Điều này có thể xảy ra trong câu lệnh

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
013, trong lệnh gọi các hàm tích hợp sẵn
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
31,
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
32 hoặc
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
33 hoặc khi đọc tập lệnh ban đầu hoặc đầu vào tiêu chuẩn [cũng tương tác]

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
13 của trường hợp ngoại lệ chỉ trả về thông báo lỗi. Chi tiết là một bộ có các thành viên cũng có sẵn dưới dạng các thuộc tính riêng biệt

tên tệp

Tên của tệp xảy ra lỗi cú pháp trong

lineno

Số dòng nào trong tệp xảy ra lỗi trong. Đây là 1 chỉ mục. dòng đầu tiên trong tệp có một

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
35 của 1

Cột trong dòng xảy ra lỗi. Đây là 1 chỉ mục. ký tự đầu tiên trong dòng có một

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
36 của 1

văn bản

Văn bản mã nguồn liên quan đến lỗi

end_lineno

Số dòng nào trong tệp xảy ra lỗi kết thúc bằng. Đây là 1 chỉ mục. dòng đầu tiên trong tệp có một

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
35 của 1

end_offset

Cột ở dòng cuối nơi xảy ra lỗi kết thúc. Đây là 1 chỉ mục. ký tự đầu tiên trong dòng có một

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
36 của 1

Đối với các lỗi trong các trường chuỗi f, thông báo có tiền tố là “chuỗi f. ” và phần bù là phần bù trong văn bản được tạo từ biểu thức thay thế. Ví dụ: biên dịch trường f'Bad {a b}' dẫn đến thuộc tính args này. [‘chuỗi f. …’, [‘’, 1, 2, ‘[a b]n’, 1, 5]]

Đã thay đổi trong phiên bản 3. 10. Đã thêm thuộc tính

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
39 và
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
40.

ngoại lệ Lỗi thụt lề

Lớp cơ sở cho các lỗi cú pháp liên quan đến thụt lề không chính xác. Đây là một lớp con của

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
41

ngoại lệ TabError

Tăng lên khi thụt lề có sử dụng không nhất quán các tab và dấu cách. Đây là một lớp con của

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
42

ngoại lệ Lỗi hệ thống

Xảy ra khi trình thông dịch tìm thấy một lỗi nội bộ, nhưng tình huống có vẻ không nghiêm trọng đến mức khiến nó từ bỏ mọi hy vọng. Giá trị được liên kết là một chuỗi cho biết điều gì đã xảy ra [theo thuật ngữ cấp thấp]

Bạn nên báo cáo điều này với tác giả hoặc người duy trì trình thông dịch Python của bạn. Đảm bảo báo cáo phiên bản của trình thông dịch Python [

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
43; nó cũng được in khi bắt đầu phiên Python tương tác], thông báo lỗi chính xác [giá trị liên quan đến ngoại lệ] và nếu có thể, nguồn của chương trình đã gây ra lỗi

ngoại lệ Thoát hệ thống

Ngoại lệ này được đưa ra bởi hàm

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
44. Nó kế thừa từ
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
00 thay vì
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
03 để không vô tình bị bắt bởi mã bắt
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
03. Điều này cho phép ngoại lệ lan truyền đúng cách và khiến trình thông dịch thoát ra. Khi nó không được xử lý, trình thông dịch Python sẽ thoát; . Hàm tạo chấp nhận cùng một đối số tùy chọn được truyền cho
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
44. Nếu giá trị là một số nguyên, nó chỉ định trạng thái thoát hệ thống [được chuyển đến hàm
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
49 của C];

Lệnh gọi tới

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
44 được dịch thành một ngoại lệ để trình xử lý dọn dẹp [
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
2 mệnh đề của câu lệnh
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
01] có thể được thực thi và để trình gỡ lỗi có thể thực thi tập lệnh mà không gặp rủi ro mất quyền kiểm soát. Hàm
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
54 có thể được sử dụng nếu thực sự cần thiết phải thoát ngay lập tức [ví dụ: trong tiến trình con sau khi gọi tới
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
55]

Trạng thái thoát hoặc thông báo lỗi được chuyển đến hàm tạo. [Mặc định là

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
7. ]

ngoại lệ TypeError

Xảy ra 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. Giá trị được liên kết là một chuỗi cung cấp thông tin chi tiết về loại không khớp

Ngoại lệ này có thể được đưa ra bởi mã người dùng để chỉ ra rằng một thao tác đã thử trên một đối tượng không được hỗ trợ và không có nghĩa là. Nếu một đối tượng nhằm hỗ trợ một hoạt động nhất định nhưng chưa cung cấp triển khai, thì

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
033 là ngoại lệ thích hợp để nâng cao

Truyền đối số sai loại [e. g. truyền một

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
58 khi một
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
59 được mong đợi] sẽ dẫn đến một
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
00, nhưng truyền các đối số có giá trị sai [e. g. một số bên ngoài ranh giới dự kiến] sẽ dẫn đến một
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
61

ngoại lệ UnboundLocalError

Xảy ra khi một tham chiếu được tạo cho 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 được liên kết với biến đó. Đây là một phân lớp của

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
62

ngoại lệ Lỗi Unicode

Xảy ra khi xảy ra lỗi mã hóa hoặc giải mã liên quan đến Unicode. Nó là một lớp con của

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
61

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
64 có các thuộc tính mô tả lỗi mã hóa hoặc giải mã. Ví dụ:
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
65 cung cấp đầu vào không hợp lệ cụ thể khiến codec bị lỗi

mã hóa

Tên của mã hóa gây ra lỗi

lý do

Một chuỗi mô tả lỗi codec cụ thể

đối tượng

Đối tượng mà codec đang cố mã hóa hoặc giải mã

bắt đầu

Chỉ mục đầu tiên của dữ liệu không hợp lệ trong

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
66

kết thúc

Chỉ mục sau dữ liệu không hợp lệ cuối cùng trong

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
66

ngoại lệ Lỗi UnicodeEncode

Xảy ra khi xảy ra lỗi liên quan đến Unicode trong quá trình mã hóa. Nó là một lớp con của

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
64

ngoại lệ Lỗi UnicodeDecode

Xảy ra khi xảy ra lỗi liên quan đến Unicode trong quá trình giải mã. Nó là một lớp con của

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
64

ngoại lệ Lỗi UnicodeTranslate

Xảy ra khi xảy ra lỗi liên quan đến Unicode trong quá trình dịch. Nó là một lớp con của

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
64

ngoại lệ Lỗi giá trị

Xảy ra khi một hoạt động hoặc chức năng nhận được một đối số có loại phù hợp nhưng giá trị không phù hợp và tình huống không được mô tả bằng một ngoại lệ chính xác hơn, chẳng hạn như

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
07

ngoại lệ Lỗi ZeroDivision

Xảy ra khi đối số thứ hai của phép chia hoặc phép toán modulo bằng 0. Giá trị được liên kết là một chuỗi cho biết loại toán hạng và phép toán

Các ngoại lệ sau đây được giữ lại để tương thích với các phiên bản trước; . 3, họ là bí danh của

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
14

ngoại lệ Lỗi môi trườngngoại lệ IOErrorexception WindowsError

Chỉ khả dụng trên Windows

Ngoại lệ của hệ điều hành¶

Các ngoại lệ sau đây là các phân lớp của

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
14, chúng tăng lên tùy thuộc vào mã lỗi hệ thống

ngoại lệ BlockingIOError

Xảy ra khi một thao tác sẽ chặn trên một đối tượng [e. g. ổ cắm] được đặt cho hoạt động không chặn. Tương ứng với _______ 2039 _______ 075, _______ 076, ______ 077 và

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
78

Ngoài các thuộc tính của

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
14,
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
80 có thể có thêm một thuộc tính

ký tự_viết

Một số nguyên chứa số ký tự được ghi vào luồng trước khi luồng bị chặn. Thuộc tính này khả dụng khi sử dụng các lớp I/O đệm từ mô-đun

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
81

ngoại lệ Lỗi ChildProcess

Xảy ra khi thao tác trên tiến trình con không thành công. Tương ứng với ________ 2039 ________ 083

ngoại lệ Lỗi kết nối

Một lớp cơ sở cho các vấn đề liên quan đến kết nối

Các phân lớp là ________ 084, ________ 085, ________ 086 và ________ 087

ngoại lệ Lỗi BrokenPipe

Một phân lớp của

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
88, được nâng lên khi cố ghi trên một đường ống trong khi đầu kia đã bị đóng hoặc cố ghi trên một ổ cắm đã bị tắt để ghi. Tương ứng với
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
039
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
90 và
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
91

ngoại lệ Lỗi kết nối bị hủy bỏ

Một lớp con của

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
88, được nâng lên khi nỗ lực kết nối bị hủy bỏ bởi đồng nghiệp. Tương ứng với ________ 2039 ________ 094

ngoại lệ Lỗi kết nối bị từ chối

Một phân lớp của

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
88, được nâng lên khi nỗ lực kết nối bị từ chối bởi đồng nghiệp. Tương ứng với ________ 2039 ________ 097

ngoại lệ Lỗi thiết lập lại kết nối

Một lớp con của

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
88, được nâng lên khi kết nối được đặt lại bởi thiết bị ngang hàng. Tương ứng với
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
039
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
000

ngoại lệ Lỗi FileExists

Xảy ra khi cố gắng tạo một tệp hoặc thư mục đã tồn tại. Tương ứng với

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
039
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
002

ngoại lệ Lỗi FileNotFound

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

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
039
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
004

ngoại lệ Lỗi gián đoạn

Xảy ra khi cuộc gọi hệ thống bị gián đoạn bởi tín hiệu đến. Tương ứng với

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
039
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
006

Đã thay đổi trong phiên bản 3. 5. Python hiện thử lại các cuộc gọi hệ thống khi một tòa nhà chọc trời bị tín hiệu làm gián đoạn, trừ khi trình xử lý tín hiệu đưa ra một ngoại lệ [xem PEP 475 để biết lý do], thay vì tăng

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
007.

ngoại lệ IsADirectoryError

Xảy ra khi một thao tác tệp [chẳng hạn như

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
008] được yêu cầu trên một thư mục. Tương ứng với
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
039
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
010

ngoại lệ NotADirectoryError

Xảy ra khi một hoạt động thư mục [chẳng hạn như

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
011] được yêu cầu trên thứ gì đó không phải là thư mục. Trên hầu hết các nền tảng POSIX, nó cũng có thể tăng lên nếu một thao tác cố mở hoặc duyệt một tệp không phải thư mục như thể đó là một thư mục. Tương ứng với
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
039
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
013

ngoại lệ Lỗi quyền

Xảy ra khi cố chạy một thao tác mà không có quyền truy cập đầy đủ - ví dụ: quyền hệ thống tệp. Tương ứng với _______ 2039 ________ 1015, _______ 1016 và ________ 1017

Đã thay đổi trong phiên bản 3. 11. 1. _______1017 của WASI hiện được ánh xạ tới ____1019.

ngoại lệ Lỗi ProcessLookup

Tăng lên khi một quy trình nhất định không tồn tại. Tương ứng với

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
039
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
021

ngoại lệ Lỗi hết giờ

Tăng lên khi chức năng hệ thống hết thời gian ở cấp hệ thống. Tương ứng với

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
039
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
023

Mới trong phiên bản 3. 3. Tất cả các lớp con

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
14 ở trên đã được thêm vào.

Xem thêm

PEP 3151 - Làm lại hệ thống phân cấp ngoại lệ của OS và IO

Cảnh báo¶

Các trường hợp ngoại lệ sau đây được sử dụng làm danh mục cảnh báo; . Warning Categories documentation for more details.

ngoại lệ Cảnh báo

Lớp cơ sở cho danh mục cảnh báo

ngoại lệ Cảnh báo người dùng

Lớp cơ sở cho các cảnh báo được tạo bởi mã người dùng

ngoại lệ Cảnh báo không dùng nữa

Lớp cơ sở để cảnh báo về các tính năng không dùng nữa khi những cảnh báo đó dành cho các nhà phát triển Python khác

Bị bộ lọc cảnh báo mặc định bỏ qua, ngoại trừ trong mô-đun

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
025 [PEP 565]. Kích hoạt Chế độ phát triển Python hiển thị cảnh báo này.

Chính sách khấu hao được mô tả trong PEP 387

ngoại lệ PendingDeprecationWarning

Lớp cơ sở để cảnh báo về các tính năng đã lỗi thời và dự kiến ​​sẽ không được dùng nữa trong tương lai, nhưng hiện tại không được dùng nữa

Lớp này hiếm khi được sử dụng vì việc đưa ra cảnh báo về khả năng ngừng sử dụng sắp tới là điều bất thường và

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
026 được ưu tiên cho các hoạt động ngừng sử dụng đã hoạt động

Bị bộ lọc cảnh báo mặc định bỏ qua. Kích hoạt Chế độ phát triển Python hiển thị cảnh báo này.

Chính sách khấu hao được mô tả trong PEP 387

ngoại lệ Cảnh báo cú pháp

Lớp cơ sở để cảnh báo về cú pháp đáng ngờ

ngoại lệ Cảnh báo thời gian chạy

Lớp cơ sở để cảnh báo về hành vi thời gian chạy đáng ngờ

ngoại lệ Cảnh báo tương lai

Lớp cơ sở để cảnh báo về các tính năng không dùng nữa khi những cảnh báo đó dành cho người dùng cuối của các ứng dụng được viết bằng Python

ngoại lệ Cảnh báo nhập

Lớp cơ sở để cảnh báo về các lỗi có thể xảy ra trong quá trình nhập mô-đun

Bị bộ lọc cảnh báo mặc định bỏ qua. Kích hoạt Chế độ phát triển Python hiển thị cảnh báo này.

ngoại lệ Cảnh báo Unicode

Lớp cơ sở cho các cảnh báo liên quan đến Unicode

ngoại lệ Cảnh báo mã hóa

Lớp cơ sở cho các cảnh báo liên quan đến mã hóa

Xem Cảnh báo mã hóa chọn tham gia để biết chi tiết.

Mới trong phiên bản 3. 10

ngoại lệ Cảnh báo byte

Lớp cơ sở cho các cảnh báo liên quan đến

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
027 và
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
028

ngoại lệ Cảnh báo tài nguyên

Lớp cơ sở cho các cảnh báo liên quan đến việc sử dụng tài nguyên

Bị bộ lọc cảnh báo mặc định bỏ qua. Kích hoạt Chế độ phát triển Python hiển thị cảnh báo này.

Mới trong phiên bản 3. 2

Nhóm ngoại lệ¶

Những điều sau đây được sử dụng khi cần đưa ra nhiều ngoại lệ không liên quan. Chúng là một phần của hệ thống phân cấp ngoại lệ để chúng có thể được xử lý với

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
02 giống như tất cả các ngoại lệ khác. Ngoài ra, chúng được công nhận bởi
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
030, phù hợp với các nhóm con của chúng dựa trên các loại ngoại lệ có trong đó

ngoại lệ Nhóm ngoại lệ[tin nhắn , excs]exception BaseExceptionGroup[msg, excs]

Cả hai loại ngoại lệ này đều bao bọc các ngoại lệ trong chuỗi

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
031. Tham số
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
032 phải là một chuỗi. Sự khác biệt giữa hai lớp là
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
033 mở rộng
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
00 và nó có thể bao bọc bất kỳ ngoại lệ nào, trong khi
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
035 mở rộng
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
03 và nó chỉ có thể bao bọc các lớp con của
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
03. Thiết kế này sao cho
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
038 bắt được
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
035 nhưng không bắt được
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
033

Hàm tạo

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
033 trả về một
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
035 thay vì một
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
033 nếu tất cả các ngoại lệ chứa trong đó là các thể hiện của
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
03, vì vậy nó có thể được sử dụng để thực hiện lựa chọn tự động. Mặt khác, phương thức khởi tạo
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
035 tăng
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
00 nếu có bất kỳ ngoại lệ nào không phải là phân lớp
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
03

thông báo

Đối số

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
032 cho hàm tạo. Đây là thuộc tính chỉ đọc

ngoại lệ

Một bộ các ngoại lệ trong chuỗi

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
031 được cung cấp cho hàm tạo. Đây là thuộc tính chỉ đọc

nhóm con[điều kiện]

Trả về một nhóm ngoại lệ chỉ chứa các ngoại lệ từ nhóm hiện tại phù hợp với điều kiện hoặc

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
7 nếu kết quả trống

Điều kiện có thể là một hàm chấp nhận một ngoại lệ và trả về true cho những ngoại lệ nên nằm trong nhóm con hoặc nó có thể là một loại ngoại lệ hoặc một bộ gồm các loại ngoại lệ, được sử dụng để kiểm tra sự phù hợp bằng cách sử dụng cùng một kiểm tra đó.

Cấu trúc lồng nhau của ngoại lệ hiện tại được giữ nguyên trong kết quả, cũng như các giá trị của các trường

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
052,
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
053,
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
8,
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
0 và
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
056 của nó. Các nhóm lồng nhau trống được bỏ qua khỏi kết quả

Điều kiện được kiểm tra cho tất cả các ngoại lệ trong nhóm ngoại lệ lồng nhau, bao gồm cấp cao nhất và bất kỳ nhóm ngoại lệ lồng nhau nào. Nếu điều kiện đúng với một nhóm ngoại lệ như vậy, nó sẽ được đưa vào kết quả đầy đủ

tách[điều kiện]

Giống như

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
057, nhưng trả về cặp
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
058 trong đó
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
059 là
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
060 và
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
061 là phần không khớp còn lại

xuất phát[excs]

Trả về một nhóm ngoại lệ có cùng

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
052, nhưng bao bọc các ngoại lệ trong
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
031

Phương pháp này được sử dụng bởi

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
057 và
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
065. Một lớp con cần ghi đè lên nó để làm cho các phiên bản trả về của lớp con
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
057 và
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
065 thay vì
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
035

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
057 và
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
065 sao chép các trường
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
053,
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
8,
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
0 và
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
056 từ nhóm ngoại lệ ban đầu sang nhóm được trả về bởi
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
075, vì vậy các trường này không cần phải cập nhật trước
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
075

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
0

Lưu ý rằng

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
033 định nghĩa
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
078, vì vậy các lớp con cần chữ ký hàm tạo khác cần ghi đè chữ ký đó thay vì
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
079. Ví dụ: phần sau định nghĩa một lớp con của nhóm ngoại lệ chấp nhận một exit_code và xây dựng thông báo của nhóm từ nó

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
1

Giống như

try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
035, bất kỳ lớp con nào của
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
033 cũng là lớp con của
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
03 chỉ có thể bao bọc các thể hiện của
try:
    ...
except SomeException:
    tb = sys.exc_info[][2]
    raise OtherException[...].with_traceback[tb]
03

Điều gì gây ra lỗi thời gian chạy trong Python?

Xảy ra lỗi thời gian chạy khi Python hiểu những gì bạn đang nói, nhưng gặp sự cố khi làm theo hướng dẫn của bạn . Xin mèo chó khỉ. Ngữ pháp của câu này không có nghĩa. Từ góc độ ngữ pháp tiếng Anh, nó thiếu một động từ [hành động].

Lỗi thời gian chạy có nghiêm trọng không?

Đôi khi, điều đó có thể ngăn bạn sử dụng ứng dụng hoặc thậm chí cả máy tính cá nhân của bạn . Trong một số trường hợp, người dùng chỉ cần làm mới thiết bị hoặc chương trình để khắc phục lỗi thời gian chạy. Tuy nhiên, đôi khi, người dùng có thể phải thực hiện một hành động cụ thể để sửa lỗi.

Chủ Đề