Khi một chương trình gặp một ngoại lệ trong quá trình thực thi, nó sẽ bị chấm dứt nếu ngoại lệ đó không được xử lý. Bằng cách xử lý nhiều ngoại lệ, một chương trình có thể đáp ứng các ngoại lệ khác nhau mà không chấm dứt nó
Trong Python, các khối try-except
có thể được sử dụng để bắt và phản hồi một hoặc nhiều ngoại lệ. Trong trường hợp một quy trình đưa ra nhiều hơn một ngoại lệ có thể xảy ra, tất cả chúng có thể được xử lý bằng một mệnh đề except
Có một số cách tiếp cận để xử lý nhiều ngoại lệ trong Python, cách phổ biến nhất được thảo luận bên dưới
Cài đặt SDK Python để xác định và sửa lỗi ngoại lệ
Sử dụng cùng một khối mã cho nhiều ngoại lệ
Với cách tiếp cận này, cùng một khối mã được thực thi nếu xảy ra bất kỳ trường hợp ngoại lệ nào được liệt kê. Đây là một ví dụ
try:
name = 'Bob'
name += 5
except [NameError, TypeError] as error:
print[error]
rollbar.report_exc_info[]
Trong ví dụ trên, mã trong khối except
sẽ được thực thi nếu xảy ra bất kỳ trường hợp ngoại lệ nào được liệt kê. Chạy đoạn mã trên sẽ tạo ra một
cannot concatenate 'str' and 'int' objects
0, được mã xử lý, tạo ra đầu ra saucannot concatenate 'str' and 'int' objects
Sử dụng các khối mã khác nhau cho nhiều ngoại lệ
Nếu một số trường hợp ngoại lệ cần được xử lý theo cách khác, chúng có thể được đặt trong điều khoản except
của riêng chúng
try:
name = 'Bob'
name += 5
except NameError as ne:
# Code to handle NameError
print[ne]
rollbar.report_exc_info[]
except TypeError as te:
# Code to handle TypeError
print[te]
rollbar.report_exc_info[]
Trong ví dụ trên,
cannot concatenate 'str' and 'int' objects
2 và cannot concatenate 'str' and 'int' objects
0 là hai ngoại lệ có thể xảy ra trong mã, chúng được xử lý khác nhau trong các khối ngoại trừ của riêng chúng
Điều tra các ngoại lệ bằng cách sử dụng các câu lệnh If, Elif, Else
Cũng có thể kiểm tra ngoại lệ bằng cách sử dụng điều kiện
cannot concatenate 'str' and 'int' objects
4, điều này có thể hữu ích nếu ngoại lệ cần được điều tra thêmimport errno
try:
f = open['/opt/tmp/myfile.txt']
except IOError as e:
rollbar.report_exc_info[]
if e.errno == errno.ENOENT:
print['File not found']
elif e.errno == errno.EACCES:
print['Permission denied']
else:
print e
Ở đây, biến
cannot concatenate 'str' and 'int' objects
5 chứa một thể hiện của biến cannot concatenate 'str' and 'int' objects
6 đã được nâng lên. Mã trạng thái bổ sung của ngoại lệ được kiểm tra trong các khối cannot concatenate 'str' and 'int' objects
7, cannot concatenate 'str' and 'int' objects
8 và cannot concatenate 'str' and 'int' objects
9 và khớp đầu tiên được thực thiFile not found
So khớp nhiều mệnh đề ngoại trừ
Có thể có trường hợp một đoạn mã gây ra ngoại lệ có thể khớp với nhiều mệnh đề except
try:
f = open['/opt/tmp/myfile.txt']
except EnvironmentError:
rollbar.report_exc_info[]
print['Failed to open file']
except IOError:
rollbar.report_exc_info[]
print['File not found']
Vì
try:
name = 'Bob'
name += 5
except NameError as ne:
# Code to handle NameError
print[ne]
rollbar.report_exc_info[]
except TypeError as te:
# Code to handle TypeError
print[te]
rollbar.report_exc_info[]
1 tổng quát hơn cannot concatenate 'str' and 'int' objects
6, nên nó phù hợp với ngoại lệ trong đoạn mã trên. Mệnh đề EnvironmentError except
được liệt kê đầu tiên, vì vậy mã bên trong nó được thực thi, tạo ra kết quả sauFailed to open file
Theo dõi, phân tích và quản lý lỗi với Rollbar
Quản lý lỗi và ngoại lệ trong mã của bạn là một thách thức. Nó có thể làm cho việc triển khai mã sản xuất trở thành một trải nghiệm đáng sợ. Khả năng theo dõi, phân tích và quản lý lỗi trong thời gian thực có thể giúp bạn tiến hành một cách tự tin hơn. Rollbar tự động theo dõi và xử lý lỗi, giúp việc sửa lỗi Python trở nên dễ dàng hơn bao giờ hết. Hãy đăng ký ngay hôm nay
Python đi kèm với sự hỗ trợ rộng rãi về ngoại lệ và xử lý ngoại lệ. Một sự kiện ngoại lệ làm gián đoạn và, nếu không được phát hiện, sẽ ngay lập tức chấm dứt một chương trình đang chạy. Các ví dụ phổ biến nhất là _______ 48 _______, ________ 49 _______ và
try: lst = ['Alice', 'Bob', 'Carl'] print[lst[3]] except Exception as e: print[e] print['Am I executed?']0
Một ngoại lệ sẽ ngay lập tức chấm dứt chương trình của bạn. Để tránh điều này, bạn có thể bắt ngoại lệ bằng một khối
try: lst = ['Alice', 'Bob', 'Carl'] print[lst[3]] except Exception as e: print[e] print['Am I executed?']1 xung quanh mã mà bạn cho rằng một ngoại lệ nhất định có thể xảy ra. Đây là cách bạn bắt và in một ngoại lệ nhất định
Để bắt và in một ngoại lệ xảy ra trong một đoạn mã, hãy bọc nó trong một khối
try: lst = ['Alice', 'Bob', 'Carl'] print[lst[3]] except Exception as e: print[e] print['Am I executed?']2 thụt lề, theo sau là lệnh
try: lst = ['Alice', 'Bob', 'Carl'] print[lst[3]] except Exception as e: print[e] print['Am I executed?']3 để bắt ngoại lệ và lưu thông báo lỗi của nó trong biến chuỗi
try: lst = ['Alice', 'Bob', 'Carl'] print[lst[3]] except Exception as e: print[e] print['Am I executed?']4. Bây giờ bạn có thể in thông báo lỗi bằng
try: lst = ['Alice', 'Bob', 'Carl'] print[lst[3]] except Exception as e: print[e] print['Am I executed?']5 hoặc sử dụng nó để xử lý thêm
try: # .. YOUR CODE HERE .. # except Exception as e: # .. PRINT THE ERROR MESSAGE .. # print[e]
ví dụ 1. Bắt và In IndexError
Nếu bạn cố gắng truy cập phần tử danh sách có chỉ số 100 nhưng danh sách của bạn chỉ bao gồm ba phần tử, Python sẽ gửi một thông báo IndexError
cho bạn biết rằng chỉ mục danh sách nằm ngoài phạm vi
try: lst = ['Alice', 'Bob', 'Carl'] print[lst[3]] except Exception as e: print[e] print['Am I executed?']
Mã thông minh của bạn cố gắng truy cập phần tử thứ tư trong danh sách của bạn với chỉ mục 3—không tồn tại
May mắn thay, bạn đã bọc mã trong một khối
try: lst = ['Alice', 'Bob', 'Carl'] print[lst[3]] except Exception as e: print[e] print['Am I executed?']7 và in ngoại lệ. Chương trình chưa kết thúc. Do đó, nó thực thi câu lệnh
try: lst = ['Alice', 'Bob', 'Carl'] print[lst[3]] except Exception as e: print[e] print['Am I executed?']8 cuối cùng sau khi ngoại lệ đã được bắt và xử lý. Đây là đầu ra của đoạn mã trước
list index out of range Am I executed?
🌍 Hướng dẫn đề xuất. Làm cách nào để in lỗi trong Python?
ví dụ 2. Bắt và In Giá trị Lỗi
ValueError
phát sinh nếu bạn cố gắng sử dụng các giá trị sai trong một số chức năng. Đây là một ví dụ trong đó ValueError
được nâng lên vì bạn đã cố gắng tính căn bậc hai của một số âm
import math try: a = math.sqrt[-2] except Exception as e: print[e] print['Am I executed?']
Đầu ra cho thấy không chỉ thông báo lỗi mà cả chuỗi
list index out of range Am I executed?1 cũng được in
math domain error Am I executed?
ví dụ 3. Loại Bắt và In Lỗi
Python ném
list index out of range Am I executed?2 nếu bạn sử dụng lập chỉ mục với ký hiệu dấu ngoặc vuông trên một đối tượng không thể lập chỉ mục. Đây là trường hợp nếu đối tượng không xác định phương thức
list index out of range Am I executed?3. Đây là cách bạn có thể bắt lỗi và in nó ra trình bao của mình
try: variable = None print[variable[0]] except Exception as e: print[e] print['Am I executed?']
Đầu ra cho thấy không chỉ thông báo lỗi mà cả chuỗi
list index out of range Am I executed?1 cũng được in
'NoneType' object is not subscriptable Am I executed?
Tôi hy vọng bây giờ bạn có thể nắm bắt và in các thông báo lỗi của mình
Bản tóm tắt
Để bắt và in một ngoại lệ xảy ra trong một đoạn mã, hãy bọc nó trong một khối
try: lst = ['Alice', 'Bob', 'Carl'] print[lst[3]] except Exception as e: print[e] print['Am I executed?']2 thụt lề, theo sau là lệnh
try: lst = ['Alice', 'Bob', 'Carl'] print[lst[3]] except Exception as e: print[e] print['Am I executed?']3 để bắt ngoại lệ và lưu thông báo lỗi của nó trong biến chuỗi
try: lst = ['Alice', 'Bob', 'Carl'] print[lst[3]] except Exception as e: print[e] print['Am I executed?']4. Bây giờ bạn có thể in thông báo lỗi bằng
try: lst = ['Alice', 'Bob', 'Carl'] print[lst[3]] except Exception as e: print[e] print['Am I executed?']5 hoặc sử dụng nó để xử lý thêm
Đi đâu từ đây?
Đủ lý thuyết. Hãy thực hành một số
Các lập trình viên được trả sáu con số trở lên vì họ có thể giải quyết vấn đề hiệu quả hơn bằng cách sử dụng trí thông minh máy móc và tự động hóa
Để trở nên thành công hơn trong việc viết mã, hãy giải quyết nhiều vấn đề thực tế hơn cho người thực. Đó là cách bạn trau dồi những kỹ năng bạn thực sự cần trong thực tế. Rốt cuộc, việc sử dụng lý thuyết học tập mà không ai cần là gì?
Bạn xây dựng các kỹ năng mã hóa có giá trị cao bằng cách làm việc trên các dự án mã hóa thực tế
Bạn có muốn ngừng học với các dự án đồ chơi và tập trung vào các dự án mã thực tế giúp bạn kiếm tiền và giải quyết các vấn đề thực sự cho mọi người không?
🚀 Nếu câu trả lời của bạn là CÓ. , cân nhắc trở thành nhà phát triển Python tự do. Đó là cách tốt nhất để tiếp cận nhiệm vụ cải thiện kỹ năng Python của bạn—ngay cả khi bạn là người mới hoàn toàn
Nếu bạn chỉ muốn tìm hiểu về cơ hội làm việc tự do, vui lòng xem hội thảo trên web miễn phí của tôi “Cách xây dựng kỹ năng Python có thu nhập cao của bạn” và tìm hiểu cách tôi phát triển công việc viết mã trực tuyến của mình cũng như cách bạn có thể làm được—từ sự thoải mái của bạn
Tham gia hội thảo trên web miễn phí ngay bây giờ
lập trình viên
Q: How do you tell an introverted computer scientist from an extroverted computer scientist?
A: An extroverted computer scientist looks at your shoes when he talks to you.
Chris
Trong khi làm việc với tư cách là một nhà nghiên cứu trong các hệ thống phân tán, Dr. Christian Mayer tìm thấy tình yêu của mình với việc dạy sinh viên khoa học máy tính
Để giúp sinh viên đạt được mức độ thành công Python cao hơn, anh ấy đã thành lập trang web giáo dục lập trình Finxter. com. Ông là tác giả của cuốn sách lập trình nổi tiếng Python One-Liners [NoStarch 2020], đồng tác giả của loạt sách tự xuất bản Coffee Break Python, người đam mê khoa học máy tính, cộng tác viên tự do và chủ sở hữu của một trong 10 blog Python lớn nhất thế giới
Niềm đam mê của anh ấy là viết, đọc và mã hóa. Nhưng niềm đam mê lớn nhất của anh ấy là phục vụ các lập trình viên đầy tham vọng thông qua Finxter và giúp họ nâng cao kỹ năng của mình. Bạn có thể tham gia học viện email miễn phí của anh ấy tại đây