Lỗi là điều không thể tránh khỏi trong cuộc sống của một lập trình viên. Trên thực tế, trong khi viết chương trình, lỗi có thể thực sự hữu ích trong việc xác định lỗi logic và lỗi cú pháp trong mã của bạn
Tuy nhiên, nếu bạn có thể lường trước lỗi trong một nhóm dòng mã cụ thể trước khi thực thi, thì bạn có thể xử lý các lỗi đó và làm cho mã không có lỗi
Tại sao xử lý lỗi lại quan trọng
Xử lý hoặc xử lý các lỗi mà bạn biết giúp mã chạy và thực thi trơn tru mà không bị gián đoạn. Nếu xảy ra lỗi trong bất kỳ dòng mã nào, việc xử lý lỗi sẽ xử lý chúng và sau đó mã sẽ tiếp tục thực thi
Hãy lấy một ví dụ và hiểu tại sao chúng ta cần xử lý lỗi
a = 12
b = 6
result = a/b
print[result]
print["I have reached the end of the line"]
Chương trình không có lỗiTừ đoạn mã trên, bạn mong đợi điều gì?. Chà, biến ________ 60 in ra ________ 61 và ở dòng tiếp theo, bảng điều khiển in ra
1. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
2. Đó là những gì chúng tôi đang ngoại trừHãy thay đổi giá trị của
1. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
0 từ 1. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
1 thành 1. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
2 và chạy1. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
Chương trình có lỗiKhi mã này được thực thi, chúng tôi sẽ gặp lỗi như bên dưới
Thông báo lỗi hiển thị khi b được đặt thành 0Mã không in giá trị
1. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
0 và nó cũng không in 1. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
2Các thông báo lỗi ở trên hiển thị
1. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
5, có nghĩa là nếu chúng tôi cố gắng chia bất kỳ số nào cho 1. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
6, chúng tôi sẽ nhận được lỗi nàyVấn đề nằm ở dòng
1. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
7. Mặc dù đoạn mã không in ra giá trị 1. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
0, nhưng lẽ ra nó phải in ra 1. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
2. Nhưng, nó đã không - tại sao?Chà, bởi vì trình thông dịch Python dừng ở dòng 3 khi
a = int[input[]]
b = int[input[]]
result = a/b
print[result]
print["I have reached the end of the line"]
0 chia cho 1. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
6. Tại thời điểm này, nó đã báo lỗi trong bảng điều khiển và thoát khỏi mãMột trong những giải pháp ngây thơ để giải quyết vấn đề này có thể là mã hóa cứng các giá trị. Nếu các giá trị của
a = int[input[]]
b = int[input[]]
result = a/b
print[result]
print["I have reached the end of the line"]
0 và 1. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
0 được mã hóa cứng, thì việc chạy mã sẽ giải quyết được lỗi này ở một mức độ nào đóNhưng một vấn đề lớn khác có thể phát sinh là khi người dùng muốn đưa ra các giá trị
a = int[input[]]
b = int[input[]]
result = a/b
print[result]
print["I have reached the end of the line"]
0 và 1. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
0 tại thời điểm thực hiệna = int[input[]]
b = int[input[]]
result = a/b
print[result]
print["I have reached the end of the line"]
giá trị của a và b được lấy từ người dùngTại thời điểm này, có khả năng cao là người dùng sẽ cung cấp
1. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
6 làm đầu vào cho 1. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
0. Để xử lý loại lỗi dự kiến này, chúng tôi sẽ sử dụng một số phương pháp xử lý lỗi nhất định để tránh làm gián đoạn luồng thực thi [mặc dù người dùng có thể cung cấp bất kỳ đầu vào không hợp lệ nào như 1. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
6 làm đầu vào cho 1. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
0]Cách sử dụng Thử và loại trừ từ khóa trong Python
Bất kỳ dòng mã nào dễ bị lỗi hơn được giữ trong khối
1. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
90. Nếu có bất kỳ lỗi nào xảy ra, thì khối 1. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
91 sẽ xử lý các lỗi đóCấu trúc mã trông giống như thế này
1. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
9Mã Cấu trúc của từ khóa thử/ngoại trừHãy quay lại ví dụ tiêu chuẩn mà chúng ta đã thảo luận. Chúng tôi sẽ xử lý vấn đề
1. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
5 bằng cách sử dụng khối 1. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
93Hãy chèn các dòng mã có khả năng tạo ra lỗi cao. Trong trường hợp của chúng tôi, các dòng
1. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
94 trong mã của chúng tôi có khả năng cao gây ra lỗi. Vì vậy, chúng tôi đặt bốn dòng này trong khối 1. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
901. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
6Thử và khối Ngoại trừ cho bài toán chia hếtBây giờ, khi chúng tôi cung cấp cho
1. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
0 giá trị của 1. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
6, sẽ xảy ra lỗi. Vì vậy, khối ________ 191 thực thi và trình thông dịch in ________ 199 và ra khỏi khối ngoại trừ và tiếp tục in 1. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
2Mặt khác, khi chúng tôi cung cấp cho
1. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
0 một giá trị khác 0, thì chúng tôi sẽ in giá trị 1. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
0. Mã ra khỏi khối thử và tiếp tục in 1. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
2Trong cả hai trường hợp, chúng tôi có thể thực thi cho đến dòng mã cuối cùng mà không bị gián đoạn
Ngoài try and except, điều khá quan trọng là phải hiểu các từ khóa
1. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
64 và 1. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
65 đi kèm với 1. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
90 và 1. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
91Khối mã
1. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
64 xuất hiện sau khối mã 1. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
90 và 1. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
91 và thực thi khi không có lỗi nào phát sinh từ khối mã 1. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
90. Tương tự, khối mã 1. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
65 xuất hiện sau khối mã 1. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
64 và thực thi dù có xảy ra lỗi hay không – khối này sẽ thực thi chắc chắnBây giờ bạn đã hiểu cách thức hoạt động của các khối mã ________ 190, ________ 191, ________ 264 và ________ 265, thứ tự của luồng sẽ là
1. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
6Cấu trúc mã của Khối từ khóa xử lý lỗiKhi áp dụng cấu trúc tương tự cho bài toán chia số, chúng ta có được điều này
1. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
7Mã Cấu trúc bài toán chia số sau Khối từ khóa Xử lý lỗiKhi
1. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
0 được gán cho 1. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
6, thì chúng tôi gặp lỗi. Vì vậy, khối ngoại trừ thực thi và in 1. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
70 và cuối cùng khối mã thực thi và in 1. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
2Mặt khác, nếu ví dụ
1. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
0 nhận được 1. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
73 [hoặc bất kỳ giá trị khác 0 nào], thì chúng ta chia giá trị a = int[input[]]
b = int[input[]]
result = a/b
print[result]
print["I have reached the end of the line"]
0 cho 1. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
73 và lưu trữ nó trong biến 1. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
0. Đoạn mã sau đó in giá trị 1. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
0. Sau đó, khối
1. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
64 thực thi và in 1. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
79 và cuối cùng khối mã thực thi và in 1. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
2Luồng thực thi mã khi không có lỗi phát sinhTóm lược
Bây giờ, tôi hy vọng bạn đã hiểu cách triển khai xử lý lỗi trong Python để phát hiện các lỗi tiềm ẩn với các khối
1. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
93Bạn cũng đã học cách sử dụng các khối mã
1. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
64 và 1. a = 12
2. b = 0
3. result = a/b
4. print[result]
5. print["I have reached the end of the line"]
65 được liên kết với các phương pháp xử lý lỗi nàylập trình hạnh phúc
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
SDE. Nhà phân tích an ninh mạng tại Wipro. Cựu thực tập sinh tại Paralaxiom
Nếu bài viết này hữu ích, hãy tweet 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