Bạn có thể có 2 ngoại trừ trong python không?

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 thi

Bạ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

  1. 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
  2. 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
  3. Đừ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
  4. 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ớ
  5. 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
  6. 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
  7. 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 đó
  8. 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
0

Type 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
1

Lư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
3

Lư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
4

Trong 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
    try:
        # code that might raise an exception
    except (ExceptionType1, ExceptionType2, ExceptionType3):
        # code to handle the exception
    7 cho
    try:
        # 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ỗi
  • 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
    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ại
  • Việc nối của
    try:
        # code that might raise an exception
    except (ExceptionType1, ExceptionType2, ExceptionType3):
        # code to handle the exception
    8 và
    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
    3 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ể nối một chuỗi và Không có
  • 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
    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ệ
  • Khối ngoại lệ được đặt để bắt cả ba loại ngoại lệ.
    try:
        # code that might raise an exception
    except (ExceptionType1, ExceptionType2, ExceptionType3):
        # code to handle the exception
    6,
    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,
    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ành
    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
    3

 

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

Tôi có thể có hai ngoại trừ trong Python không?

Trong Python, các khối ngoại lệ thử 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 phát sinh nhiều ngoại lệ có thể xảy ra, tất cả chúng có thể được xử lý bằng một mệnh đề ngoại trừ duy nhất.

Bạn có thể có hai khối ngoại trừ?

Có thể có nhiều khối ngoại trừ cho một khối thử . Hãy cho chúng tôi xem các ví dụ xử lý nhiều ngoại lệ của Python. Khi trình thông dịch gặp một ngoại lệ, nó sẽ kiểm tra các khối ngoại trừ được liên kết với khối thử đó. Các khối ngoại trừ này có thể khai báo loại ngoại lệ mà chúng xử lý.

Có thể thử bao nhiêu ngoại lệ

1. Một khối try-ngoại trừ có thể có bao nhiêu câu lệnh ngoại trừ? . d Giải thích. Phải có ít nhất một câu lệnh except. 2.

Chúng tôi có thể xử lý nhiều ngoại lệ trong một khối bắt không?

Xử lý nhiều loại ngoại lệ . Tính năng này có thể giảm trùng lặp mã và giảm bớt sự cám dỗ để bắt một ngoại lệ quá rộng. a single catch block can handle more than one type of exception. This feature can reduce code duplication and lessen the temptation to catch an overly broad exception.