Ngoại lệ là lỗi xảy ra trong quá trình thực hiện chương trình. Python sẽ không cho bạn biết về các lỗi như lỗi cú pháp [lỗi ngữ pháp], thay vào đó nó sẽ dừng đột ngột
Thoát đột ngột có hại cho cả người dùng cuối và nhà phát triển
Thay vì dừng khẩn cấp, bạn có thể sử dụng câu lệnh thử ngoại trừ để giải quyết vấn đề đúng cách. Việc dừng khẩn cấp sẽ xảy ra nếu bạn không xử lý đúng các trường hợp ngoại lệ
khóa học liên quan. Hoàn thành khóa học & bài tập lập trình Python
Ngoại lệ trong Python là gì?
Python có các ngoại lệ tích hợp có thể gây ra lỗi. Nếu xảy ra lỗi khi chạy chương trình, nó được gọi là ngoại lệ
Nếu một ngoại lệ xảy ra, loại ngoại lệ được hiển thị. Các ngoại lệ cần được xử lý nếu không chương trình sẽ bị sập. Để xử lý các ngoại lệ, khối
17 được sử dụng
2
3
4
5
6
Một số trường hợp ngoại lệ mà bạn có thể đã thấy trước đây là
18,
2
3
4
5
6
19 hoặc
2
3
4
5
6
try:0 nhưng còn nhiều trường hợp khác nữa
1 / 0
except ZeroDivisionError:
print['Divided by zero']
print['Should reach here']
Tất cả các ngoại lệ trong Python kế thừa từ lớp BaseException. Nếu bạn mở trình bao tương tác Python và nhập câu lệnh sau, nó sẽ liệt kê tất cả các ngoại lệ tích hợp sẵn
>>> dir[builtins]
Ý tưởng của mệnh đề try-ngoại trừ là xử lý các ngoại lệ [lỗi khi chạy]. Cú pháp của khối try-ngoại trừ là
1
2
3
4
try:
except Exception:
Ý tưởng của khối try-ngoại trừ là thế này
cố gắng. mã với [các] ngoại lệ để bắt. Nếu một ngoại lệ được đưa ra, nó sẽ nhảy thẳng vào khối ngoại trừ
ngoại trừ. mã này chỉ được thực thi nếu một ngoại lệ xảy ra trong khối thử. Khối ngoại trừ được yêu cầu với khối thử, ngay cả khi nó chỉ chứa câu lệnh vượt qua
Nó có thể được kết hợp với các từ khóa khác và cuối cùng
khác. Mã trong khối khác chỉ được thực thi nếu không có ngoại lệ nào được đưa ra trong khối thử
cuối cùng. Mã trong khối cuối cùng luôn được thực thi, bất kể có ngoại lệ nào được đưa ra hay không
Bắt ngoại lệ trong Python
Khối try-ngoại trừ có thể xử lý các ngoại lệ. Điều này ngăn việc thoát chương trình đột ngột do lỗi. Trong ví dụ dưới đây, chúng tôi cố tình đưa ra một ngoại lệ
1
2
3
4
5
6
try:
1 / 0
except ZeroDivisionError:
print['Divided by zero']
print['Should reach here']
Sau khối ngoại trừ, chương trình tiếp tục. Nếu không có khối try-ngoại trừ, dòng cuối cùng sẽ không đạt được vì chương trình sẽ bị sập
$ python3 example.py
Divided by zero
Should reach here
Trong ví dụ trên, chúng tôi bắt gặp ngoại lệ cụ thể ZeroDivisionError. Bạn có thể xử lý bất kỳ ngoại lệ như thế này
1
2
3
4
5
6
11
2
3
4
5
6
Bạn có thể viết logic khác nhau cho từng loại ngoại lệ xảy ra
12____13
2
3
4
5
6
khóa học liên quan. Hoàn thành khóa học & bài tập lập trình Python
thử ngoại trừ
Hãy làm một ví dụ thực tế về khối try-ngoại trừ
Chương trình yêu cầu người dùng nhập số. Thay vào đó, người dùng nhập các ký tự vào hộp nhập liệu. Chương trình thường sẽ bị sập. Nhưng với khối thử ngoại trừ, nó có thể được xử lý đúng cách
Câu lệnh thử ngoại trừ ngăn chương trình bị lỗi và xử lý đúng cách
1
2
3
4
5
6
11
2
3
4
Nhập dữ liệu không hợp lệ, làm cho chương trình tiếp tục bình thường
Câu lệnh try ngoại trừ có thể được mở rộng với từ khóa cuối cùng, điều này sẽ được thực thi nếu không có ngoại lệ nào được đưa ra
12____53
2
3
4
Chương trình tiếp tục thực hiện nếu không có ngoại lệ nào được ném ra
Có nhiều loại ngoại lệ khác nhau. ZeroDivisionError, NameError, TypeError, v.v. Đôi khi các mô-đun xác định các ngoại lệ của riêng chúng
Khối try-ngoại trừ cũng hoạt động cho các lệnh gọi hàm
14
2
3
4
15
2
3
4
kết quả này
16
2
3
4
Nếu bạn là người mới bắt đầu, thì tôi đánh giá cao cuốn sách này
cố gắng cuối cùng
Một khối try-ngoại trừ có thể có mệnh đề cuối cùng [tùy chọn]. Mệnh đề cuối cùng luôn được thực thi.
Ý tưởng chung là.
1
2
3
4
5
6
18
2
3
4
Ví dụ. nếu bạn mở một tệp, bạn sẽ muốn đóng nó, bạn có thể làm như vậy trong mệnh đề cuối cùng
19
2
3
4
try:0
except Exception:
thử khác
Mệnh đề khác được thực thi khi và chỉ khi không có ngoại lệ nào được đưa ra. Điều này khác với mệnh đề cuối cùng luôn được thực thi
19
2
3
4
try:2
except Exception:
đầu ra
try:3
except Exception:
Bạn có thể bắt gặp nhiều loại ngoại lệ theo cách này, trong đó mệnh đề khác chỉ được thực thi nếu không có ngoại lệ nào xảy ra
try:4
except Exception:
try:5
except Exception:
Tăng ngoại lệ
Ngoại lệ được đưa ra khi xảy ra lỗi. Nhưng trong Python, bạn cũng có thể buộc một ngoại lệ xảy ra với từ khóa
try:1
1 / 0
except ZeroDivisionError:
print['Divided by zero']
print['Should reach here']
Bất kỳ loại ngoại lệ có thể được nâng lên
1____67____68
2
3
4
try:9
except Exception:
khóa học liên quan. Hoàn thành khóa học & bài tập lập trình Python
Ngoại lệ tích hợp
Danh sách Ngoại lệ tích hợp của Python được hiển thị bên dưới. Danh sách này hiển thị Ngoại lệ và lý do tại sao nó bị ném [nổi lên].Ngoại lệNguyên nhân của câu lệnh ErrorAssertionErrorif
try:2 không thành công. AttributeErrorif gán thuộc tính hoặc tham chiếu không thành công. EOFErrorif các hàm
1 / 0
except ZeroDivisionError:
print['Divided by zero']
print['Should reach here']
try:3 chạm vào điều kiện cuối tệp. FloatingPointErrornếu thao tác dấu phẩy động không thành công. GeneratorExitRaise nếu phương thức
1 / 0
except ZeroDivisionError:
print['Divided by zero']
print['Should reach here']
try:4 của trình tạo được gọi. ImportErrorif không tìm thấy mô-đun đã nhập. IndexErrorif chỉ mục của một chuỗi nằm ngoài phạm vi. KeyErrorif không tìm thấy khóa trong từ điển. KeyboardInterruptif người dùng nhấn phím ngắt [Ctrl+c hoặc xóa]. MemoryErrornếu một hoạt động hết bộ nhớ. NameErrornếu một biến không được tìm thấy trong phạm vi cục bộ hoặc toàn cầu. NotImplementedErrorbằng các phương pháp trừu tượng. OSErrorif hoạt động của hệ thống gây ra lỗi liên quan đến hệ thống. OverflowErrorif kết quả của một phép toán số học quá lớn để được biểu diễn. ReferenceErrorif một proxy tham chiếu yếu được sử dụng để truy cập một tham chiếu được thu gom rác. RuntimeErrornếu một lỗi không thuộc bất kỳ danh mục nào khác. Hàm StopIterationby
1 / 0
except ZeroDivisionError:
print['Divided by zero']
print['Should reach here']
try:5 để chỉ ra rằng không có mục nào khác được trả về bởi trình vòng lặp. SyntaxErrorby trình phân tích cú pháp nếu gặp phải lỗi cú pháp. IndentationError nếu có thụt lề không chính xác. TabErrorif thụt lề bao gồm các tab và khoảng trắng không nhất quán. Trình thông dịch SystemErrorif phát hiện lỗi nội bộ. Chức năng SystemExitby
1 / 0
except ZeroDivisionError:
print['Divided by zero']
print['Should reach here']
try:6. TypeErrornếu một chức năng hoặc hoạt động được áp dụng cho một đối tượng không đúng loại. UnboundLocalErrornếu 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 đó. UnicodeErrornếu xảy ra lỗi mã hóa hoặc giải mã liên quan đến Unicode. UnicodeEncodeErrornếu xảy ra lỗi liên quan đến Unicode trong quá trình mã hóa. UnicodeDecodeErrornếu xảy ra lỗi liên quan đến Unicode trong quá trình giải mã. UnicodeTranslateErrornếu xảy ra lỗi liên quan đến Unicode trong quá trình dịch. ValueErrornếu một hàm nhận đối số đúng loại nhưng giá trị không đúng. ZeroDivisionError nếu toán hạng thứ hai của phép chia hoặc phép toán modulo bằng 0. Ngoại lệ do người dùng xác định
1 / 0
except ZeroDivisionError:
print['Divided by zero']
print['Should reach here']
Python có nhiều loại ngoại lệ tiêu chuẩn, nhưng chúng có thể không phải lúc nào cũng phục vụ mục đích của bạn.
Chương trình của bạn có thể có loại ngoại lệ của riêng bạn.
Để tạo một ngoại lệ do người dùng định nghĩa, bạn phải tạo một lớp kế thừa từ Ngoại lệ
1
2
3
4
11
2
3
4
5
6
Bạn đã tạo một ngoại lệ do người dùng định nghĩa có tên là LunchError trong đoạn mã trên. Bạn có thể tăng ngoại lệ mới này nếu xảy ra lỗi
Xuất ra lỗi tùy chỉnh của bạn
12
2
3
4
5
6
Chương trình của bạn có thể có nhiều ngoại lệ do người dùng định nghĩa. Chương trình dưới đây đưa ra các ngoại lệ dựa trên số tiền dự án mới
13____04
2
3
4
5
6
Dưới đây là một số chạy mẫu
15
2
3
4
5
6
16
2
3
4
5
6
Đó là một cách thực hành tốt để đặt tất cả các ngoại lệ do người dùng xác định trong một tệp riêng biệt [các ngoại lệ. py hoặc lỗi. py]. Đây cũng là thực tế phổ biến trong các mô-đun tiêu chuẩn