Trong Python, khi một ngoại lệ được đưa ra, luồng thực thi bình thường bị gián đoạn và chương trình sẽ nhảy tới trình xử lý ngoại lệ kèm theo gần nhất. Cơ chế này được gọi là "bắt ngoại lệ"
Khi một ngoại lệ được đưa ra, trình thông dịch sẽ tìm kiếm một trình xử lý ngoại lệ bằng cách tìm kiếm ngăn xếp cuộc gọi. Nếu trình thông dịch tìm thấy một trình xử lý ngoại lệ có thể xử lý ngoại lệ, thì trình xử lý đó sẽ được thực thi. Nếu trình thông dịch không tìm thấy trình xử lý ngoại lệ, nó sẽ dừng thực thi chương trình và in thông báo lỗi
Khối thử được sử dụng để đính kèm mã có thể gây ra ngoại lệ. Khối
try:
# code that might raise an exception
except Exception as e:
# code to handle the exception
print[e] # e is the exception instance
5 được sử dụng để xác định trình xử lý ngoại lệ. Nếu một ngoại lệ được đưa ra trong khối try:
# code that might raise an exception
except Exception as e:
# code to handle the exception
print[e] # e is the exception instance
6, trình thông dịch sẽ kiểm tra khối try:
# code that might raise an exception
except Exception as e:
# code to handle the exception
print[e] # e is the exception instance
5 để xem nó có thể xử lý ngoại lệ đó không. Nếu loại ngoại lệ khớp với ngoại lệ được chỉ định trong khối ngoại trừ, mã trong khối ngoại trừ được thực thi và quá trình thực thi tiếp tục sau khối ngoại trừCŨNG ĐỌC. 5 ví dụ đơn giản để học hàm enumerate[] của python
Chúng ta có thể bắt nhiều ngoại lệ trong Python không?
Bạn có thể nắm bắt các loại ngoại lệ khác nhau trong các khối
try:
# code that might raise an exception
except Exception as e:
# code to handle the exception
print[e] # e is the exception instance
5 riêng biệt. Khối thử có thể có nhiều khối ngoại trừ, mỗi khối xử lý một loại ngoại lệ khác nhau. Trình thông dịch sẽ thực thi khối except đầu tiên có ngoại lệ khớp với ngoại lệ đã được nêu ra. Nếu không tìm thấy khối except phù hợp, trình thông dịch sẽ tiếp tục tìm kiếm trình xử lý ngoại lệ trong hàm gọi hoặc tập lệnh
Sử dụng các khối ngoại trừ khác nhau
Bạn có thể bắt nhiều ngoại lệ trong các khối ngoại trừ khác nhau trong Python. Đây là một ví dụ
try:
# code that might raise an exception
except ExceptionType1:
# code to handle ExceptionType1
except ExceptionType2:
# code to handle ExceptionType2
except ExceptionType3:
# code to handle ExceptionType3
Trong ví dụ này, nếu một ngoại lệ loại
try:
# code that might raise an exception
except Exception as e:
# code to handle the exception
print[e] # e is the exception instance
9 được đưa ra bên trong khối try:
# code that might raise an exception
except Exception as e:
# code to handle the exception
print[e] # e is the exception instance
6, mã bên trong khối ngoại trừ đầu tiên sẽ được thực thi. Nếu một ngoại lệ loại try:
# code that might raise an exception
except [ExceptionType1, ExceptionType2, ExceptionType3]:
# code to handle the exception
1 được đưa ra, mã bên trong khối ngoại trừ thứ hai sẽ được thực thi, v.v.Trong trường hợp này, trình thông dịch sẽ chỉ thực thi khối except đầu tiên có ngoại lệ khớp với ngoại lệ đã được nêu ra. Nếu trình thông dịch tìm thấy một trình xử lý ngoại lệ, quá trình thực thi sẽ tiếp tục sau khối ngoại trừ
Bắt tất cả các ngoại lệ
Cũng có thể bắt tất cả các ngoại lệ có thể xảy ra bằng cách sử dụng Ngoại lệ thay vì các loại ngoại lệ cụ thể
Quảng cáo
try:
# code that might raise an exception
except Exception as e:
# code to handle the exception
print[e] # e is the exception instance
CŨNG ĐỌC. Giải thích về kẹo dẻo Python [Ví dụ thực tế]
Bắt nhiều ngoại lệ bên trong một khối ngoại trừ
Bạn có thể bắt nhiều ngoại lệ trong một khối except trong Python bằng cách sử dụng dấu ngoặc đơn để chỉ định loại ngoại lệ. Đây là một cú pháp ví dụ
try:
# code that might raise an exception
except [ExceptionType1, ExceptionType2, ExceptionType3]:
# code to handle the exception
Trong ví dụ này, nếu bất kỳ ngoại lệ nào
try:
# code that might raise an exception
except Exception as e:
# code to handle the exception
print[e] # e is the exception instance
9, try:
# code that might raise an exception
except [ExceptionType1, ExceptionType2, ExceptionType3]:
# code to handle the exception
1, try:
# code that might raise an exception
except [ExceptionType1, ExceptionType2, ExceptionType3]:
# code to handle the exception
4 được đưa ra bên trong khối thử, mã bên trong khối ngoại trừ sẽ được thực thiBạn cũng có thể sử dụng từ khóa as để gán thể hiện ngoại lệ cho một biến
try:
# code that might raise an exception
except [ExceptionType1, ExceptionType2, ExceptionType3] as e:
# code to handle the exception
print[e] # e is the exception instance
Ví dụ
try:
x = 1 / 0
except [ZeroDivisionError, TypeError] as e:
print["Error:", e]
Điều này sẽ bắt cả
try:
# code that might raise an exception
except [ExceptionType1, ExceptionType2, ExceptionType3]:
# code to handle the exception
5 và try:
# code that might raise an exception
except [ExceptionType1, ExceptionType2, ExceptionType3]:
# code to handle the exception
6 và in thông báo lỗi
Các phương pháp hay nhất khi xử lý ngoại lệ trong Python là gì?
Dưới đây là một số phương pháp hay nhất để xử lý ngoại lệ trong Python
- Sử dụng các loại ngoại lệ cụ thể khi có thể. Tốt nhất là nắm bắt các loại ngoại lệ cụ thể càng nhiều càng tốt, thay vì sử dụng loại ngoại lệ chung chung như Ngoại lệ. Điều này làm cho mã của bạn mạnh mẽ hơn và ít có khả năng vô tình bắt gặp một ngoại lệ mà bạn không mong đợi
- Xử lý các ngoại lệ ở mức thích hợp. Không xử lý ngoại lệ quá thấp trong ngăn xếp cuộc gọi. Xử lý các ngoại lệ càng gần nơi chúng xảy ra càng tốt, trong khi vẫn cung cấp ngữ cảnh hữu ích
- Đừng bỏ qua các ngoại lệ. Nếu bạn bắt gặp một ngoại lệ, hãy đảm bảo rằng bạn làm gì đó để xử lý nó. Bỏ qua các ngoại lệ có thể dẫn đến hành vi không mong muốn và gây khó khăn cho việc gỡ lỗi mã của bạn
- Sử dụng khối cuối cùng. Khối cuối cùng được sử dụng để chỉ định mã sẽ được thực thi bất kể ngoại lệ có được đưa ra hay không. Điều này có thể hữu ích để dọn sạch tài nguyên, chẳng hạn như đóng tệp hoặc giải phóng bộ nhớ
- Hãy mô tả trong xử lý ngoại lệ. Sử dụng thông báo lỗi có ý nghĩa và ghi chi tiết ngoại lệ. Điều này sẽ giúp bạn hiểu và khắc phục sự cố dễ dàng hơn
- Kiểm tra xử lý ngoại lệ của bạn. Đảm bảo rằng mã xử lý ngoại lệ của bạn đang hoạt động như dự định bằng cách viết các trường hợp kiểm tra để xác minh rằng các ngoại lệ được đưa ra và xử lý chính xác
- Không sử dụng ngoại lệ để kiểm soát luồng. Các ngoại lệ có nghĩa là để xử lý các trường hợp ngoại lệ, không phải để kiểm soát luồng chương trình của bạn. Sử dụng các câu lệnh và vòng lặp có điều kiện cho mục đích đó
- Tránh trống trừ khối. Tránh sử dụng một khối except trống, bởi vì nó sẽ bắt tất cả các ngoại lệ, bao gồm cả những ngoại lệ mà bạn không mong đợi và gây khó khăn cho việc gỡ lỗi mã của bạn
CŨNG ĐỌC. Hướng dẫn đặt chênh lệch Python[] [Ví dụ thực tế]
Ví dụ thực tế để bắt nhiều ngoại lệ
Phương pháp-1. Bắt nhiều ngoại lệ trong khối ngoại lệ riêng biệt
Vòng lặp for trong Python được sử dụng để lặp qua một đối tượng có thể lặp lại [như danh sách, bộ dữ liệu, bộ, v.v. ] và thực hiện hành động tương tự cho mỗi mục nhập. Chúng ta có thể sử dụng xử lý nhiều ngoại lệ có thể xảy ra trong khi lặp lại một đối tượng. Trong trường hợp như vậy, chúng ta có thể sử dụng khối try and catch bên trong vòng lặp for của Python để xử lý nhiều ngoại lệ. Sau đây là cú pháp đơn giản
for i in iterable:
try:
# try block statements
except:
# raise an erro
Lưu ý rằng chúng tôi đã xử lý các ngoại lệ có thể xảy ra bên trong vòng lặp for
Quảng cáo
Ví dụ 1. Bắt nhiều ngoại lệ bằng cách sử dụng vòng lặp for
Bây giờ chúng ta hãy lấy một ví dụ và xem cách chúng ta có thể sử dụng vòng lặp for của python để bắt nhiều ngoại lệ. Xem ví dụ bên dưới
# iterable object
mylist = [-1, 2, 0, 4, 0]
# for loop
for i in mylist:
# Python catch multiple exceptions
try:
# raise when divide by zero
print["thedivision is:", 10/i]
# this block will be executed if error occurs
except:
# raise an error
print["Error occurs while dividing"]
đầu ra
the division is: -10.0
the division is: 5.0
Error occurs while dividing
the division is: 2.5
Error occurs while dividing
Lưu ý rằng chương trình trên đã đưa ra hai lỗi nhưng đã được xử lý thành công bằng cách sử dụng khối ngoại trừ
CŨNG ĐỌC. Hàm Python floor[] Ví dụ [Người mới bắt đầu]
Ví dụ-2. Bắt các loại Ngoại lệ khác nhau
Trong python, có nhiều ngoại lệ tích hợp sẵn, ví dụ ZeroDivisionError, IndexOutOfRange, TypeError, v.v. ZeroDivisionError xảy ra khi một số được chia cho 0 và TypeError xảy ra khi các loại dữ liệu khác nhau được thêm vào hoặc thực hiện các thao tác không thể thực hiện được. Trong khi IndexOutOfRange như tên gợi ý tăng khi chỉ mục nằm ngoài phạm vi. Trong phần này, chúng tôi sẽ xử lý ba loại lỗi đã cho. Sau đây sẽ là cú pháp đơn giản để xử lý các loại ngoại lệ khác nhau ở trên
try:
# try block statement
except ZeroDivisionError:
# Raise exception
except IndexError:
# raise exception
except TypeError:
# raise exception
Tùy thuộc vào loại ngoại lệ xảy ra trong khối thử, khối ngoại trừ cụ thể đó sẽ được thực thi để xử lý ngoại lệ
Bây giờ hãy xem cách chúng tôi xử lý các loại ngoại lệ khác nhau có thể xảy ra trong quá trình thực thi khối thử. Xem chương trình Python sau
Quảng cáo
# Python catch multiple exceptions
try:
# defining variables
a = 10
b= 0
c = "abc"
# adding the variables
d =a+c
# Zerodivision error
except ZeroDivisionError:
# printing error
print["Zero Division Error occurs"]
# index error
except IndexError:
# printing
print["Index error occurs"]
# type error
except TypeError:
# printing
print["Type error occurs"]
đầu ra
try:
# code that might raise an exception
except Exception as e:
# code to handle the exception
print[e] # e is the exception instance
0Type error xảy ra do trong Python chúng ta không thể cộng trực tiếp kiểu dữ liệu string và integer với nhau. Vì vậy, vì lỗi loại đã được đưa ra bởi khối thử, đó là lý do tại sao chỉ có khối Loại trừ TypeError được thực thi
CŨNG ĐỌC. Các đối số tùy chọn của Python trong hàm [Ví dụ thực tế]
Phương pháp-2. Bắt nhiều ngoại lệ trong một khối ngoại trừ
Thay vì viết các loại ngoại lệ khác nhau trong các khối except khác nhau, chúng ta có thể viết chúng trong một dòng bằng cách sử dụng một tuple. Tuple không là gì, chỉ là một tập hợp các đối tượng Python được phân tách bằng dấu phẩy. Chúng tôi viết tất cả các loại ngoại lệ có thể xảy ra trong một bộ và sử dụng một khối ngoại trừ. Xem cú pháp sau đây của nhiều ngoại lệ trong một dòng
try:
# code that might raise an exception
except Exception as e:
# code to handle the exception
print[e] # e is the exception instance
1Lưu ý rằng chúng tôi đã cô đọng tất cả các ngoại lệ chỉ trong một dòng bằng cách viết sau đó bên trong một kiểu chữ
Ví dụ 1. Python bắt nhiều ngoại lệ trong một dòng
Bây giờ hãy xem cách chúng tôi có thể xử lý nhiều ngoại lệ chỉ trong một dòng. Xem chương trình python bên dưới
try:
# code that might raise an exception
except Exception as e:
# code to handle the exception
print[e] # e is the exception instance
2đầu ra
try:
# code that might raise an exception
except Exception as e:
# code to handle the exception
print[e] # e is the exception instance
3Lưu ý rằng lỗi loại xảy ra và được xử lý trong khối ngoại trừ
Ví dụ-2. Xử lý nhiều ngoại lệ trong một khối ngoại trừ
Hãy đi trước một bước và xử lý thêm một số ngoại lệ trong một khối except
try:
# code that might raise an exception
except Exception as e:
# code to handle the exception
print[e] # e is the exception instance
4Trong ví dụ này, khối thử chứa 4 thao tác sẽ đưa ra các loại ngoại lệ khác nhau
- Việc chia
7 chotry: # code that might raise an exception except [ExceptionType1, ExceptionType2, ExceptionType3]: # code to handle the exception
8 sẽ tạo ra một ngoại lệtry: # code that might raise an exception except [ExceptionType1, ExceptionType2, ExceptionType3]: # code to handle the exception
6 vì không thể chia một số nguyên cho một chuỗitry: # code that might raise an exception except [ExceptionType1, ExceptionType2, ExceptionType3]: # code to handle the exception
0 sẽ đưa ra một ngoại lệtry: # code that might raise an exception except [ExceptionType1, ExceptionType2, ExceptionType3] as e: # code to handle the exception print[e] # e is the exception instance
1 vì tệp không tồn tạitry: # code that might raise an exception except [ExceptionType1, ExceptionType2, ExceptionType3] as e: # code to handle the exception print[e] # e is the exception instance
- Việc nối của
8 vàtry: # code that might raise an exception except [ExceptionType1, ExceptionType2, ExceptionType3]: # code to handle the exception
3 sẽ tạo ra một ngoại lệtry: # code that might raise an exception except [ExceptionType1, ExceptionType2, ExceptionType3] as e: # code to handle the exception print[e] # e is the exception instance
6 vì không thể nối một chuỗi và Không cótry: # code that might raise an exception except [ExceptionType1, ExceptionType2, ExceptionType3]: # code to handle the exception
5 sẽ đưa ra một ngoại lệtry: # code that might raise an exception except [ExceptionType1, ExceptionType2, ExceptionType3] as e: # code to handle the exception print[e] # e is the exception instance
6 vì chuỗi json không hợp lệtry: # code that might raise an exception except [ExceptionType1, ExceptionType2, ExceptionType3] as e: # code to handle the exception print[e] # e is the exception instance
- Khối ngoại lệ được đặt để bắt cả ba loại ngoại lệ.
6,try: # code that might raise an exception except [ExceptionType1, ExceptionType2, ExceptionType3]: # code to handle the exception
1,try: # code that might raise an exception except [ExceptionType1, ExceptionType2, ExceptionType3] as e: # code to handle the exception print[e] # e is the exception instance
6. Nếu một ngoại lệ được đưa ra, chương trình sẽ in một thông báo lỗi và đặt tất cả các biến x, y, z, dữ liệu thànhtry: # code that might raise an exception except [ExceptionType1, ExceptionType2, ExceptionType3] as e: # code to handle the exception print[e] # e is the exception instance
3try: # code that might raise an exception except [ExceptionType1, ExceptionType2, ExceptionType3] as e: # code to handle the exception print[e] # e is the exception instance
CŨNG ĐỌC. Ví dụ về đầu vào của người dùng Python. Hàm đầu vào Python[]
Bản tóm tắt
Trong Python, chúng tôi sử dụng các khối try và except để nắm bắt và xử lý bất kỳ loại ngoại lệ và lỗi nào có thể xảy ra trong quá trình thực thi chương trình của chúng tôi. Trong hướng dẫn này, chúng ta đã học về python bắt nhiều ngoại lệ bằng cách sử dụng các phương pháp khác nhau. Chúng tôi đã thảo luận năm cách khác nhau để xử lý nhiều ngoại lệ bằng cách lấy các ví dụ khác nhau. Chúng tôi đã đề cập đến cách chúng tôi có thể xử lý các ngoại lệ bằng cách sử dụng các khối ngoại lệ, các loại ngoại lệ khác nhau và cách chúng tôi có thể xử lý tất cả các loại ngoại lệ chỉ trong một dòng. Hơn nữa, chúng ta cũng đã thảo luận về cách chúng ta có thể xác định ngoại lệ của riêng mình và xử lý nó. Tóm lại, hướng dẫn này chứa tất cả các phương pháp cần thiết được sử dụng để xử lý nhiều ngoại lệ trong các tình huống khác nhau