Bắt ngoại lệ Python

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 sau

cannot 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êm

import 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 thi

File 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')

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ả sau

Failed to open file

 

Theo dõi, phân tích và quản lý lỗi với Rollbar

Bắt ngoại lệ Python

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

Bắt ngoại lệ Python

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.

Bắt ngoại lệ Python

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

Bắt ngoại lệ trong Python là gì?

Khối try and except trong Python được sử dụng để bắt và xử lý các ngoại lệ . Python thực thi mã sau câu lệnh try như một phần “bình thường” của chương trình. Mã theo sau câu lệnh ngoại trừ là phản hồi của chương trình đối với bất kỳ ngoại lệ nào trong mệnh đề thử trước đó.

Một ngoại lệ Catch là gì?

Khi tìm thấy trình xử lý thích hợp, hệ thống thời gian chạy sẽ chuyển ngoại lệ cho trình xử lý. Trình xử lý ngoại lệ được coi là phù hợp nếu loại đối tượng ngoại lệ được ném khớp với loại mà trình xử lý có thể xử lý. Trình xử lý ngoại lệ được chọn sẽ bắt ngoại lệ.

Bạn có nên bắt ngoại lệ Python không?

Không bắt ngoại lệ . Điều này sẽ bắt mọi loại ngoại lệ phân lớp lớp Exception, gần như tất cả chúng.

Làm cách nào bạn có thể nắm bắt một loại ngoại lệ cụ thể trong Python?

Các câu lệnh thử và ngoại trừ được sử dụng để bắt và xử lý các ngoại lệ trong Python. Các câu lệnh có thể đưa ra các ngoại lệ được giữ bên trong mệnh đề try và các câu lệnh xử lý ngoại lệ được viết bên trong mệnh đề ngoại trừ.