Computer >> Máy Tính >  >> Lập trình >> Python

thử và ngoại trừ trong Chương trình Python

Trong hướng dẫn này, chúng ta sẽ tìm hiểu về thử ngoại trừ của Python. Python có một khái niệm được gọi là xử lý lỗi và ngoại lệ.

Các từ khóa thử ngoại trừ được sử dụng trong việc xử lý lỗi và ngoại lệ.

Về cơ bản, chúng ta sẽ tìm thấy hai loại lỗi trong Python. Họ -

  • Lỗi cú pháp - Python đưa ra các loại lỗi này khi nó không hiểu một dòng mã trong chương trình.

  • Lỗi ngoại lệ - Các lỗi được phát hiện trong thời gian chạy chương trình. Ví dụ:- ZeroDivisionError, ValueError, v.v.,

Chúng tôi không thể ngăn lỗi cú pháp. Tuy nhiên, chúng tôi có thể xác định nếu chương trình gặp lỗi ngoại lệ bằng cách sử dụng try-exception. Hãy xem các lỗi ngoại lệ phổ biến nhất trong Python.

  • ZeroDivisionError - Nó xảy ra khi chúng ta cố gắng chia bất kỳ số nào với không (0).

  • ValueError - Nó tăng lên khi chúng ta chuyển một giá trị không phù hợp vào một hàm.

  • IndexError - Khi chúng tôi cố gắng truy cập một chỉ mục không có sẵn.

  • KeyError - Khi chúng tôi cố gắng truy cập vào một khóa không có trong từ điển.

  • ImportError - Nếu chúng tôi cố gắng nhập một mô-đun không tồn tại.

  • IOError - Nó xảy ra khi Python không thể mở tệp.

  • Bàn phím ngắt - Nó xảy ra khi người dùng nhấn một phím không cần thiết.

Có rất nhiều lỗi đặc biệt trong Python. Chúng tôi có thể xử lý những điều này một cách dễ dàng bằng thử ngoại trừ. Hãy xem cú pháp của thử ngoại trừ đầu tiên.

# try-except syntax
try:
   # statement
   # statement
   # ...
except:
   # statement
   # statement
   # ...

Cách Python thực thi thử ngoại trừ mã khối? Hãy xem từng bước.

  • Đầu tiên, Python thực thi mã bên trong try khối.

  • Nếu không có bất kỳ lỗi ngoại lệ nào trong mã, sau đó đến ngoại trừ khối sẽ không thực thi.

  • Nếu có bất kỳ lỗi ngoại lệ nào xuất hiện trong mã, sau đó thử khối sẽ bị bỏ qua và ngoại trừ mã khối sẽ thực thi **.

  • Nếu có bất kỳ lỗi ngoại lệ nào xảy ra và ngoại trừ khối không thể xử lý nó, khi đó lỗi ngoại lệ tương ứng sẽ tăng lên.

  • Chúng tôi có thể có nhiều ngoại trừ câu lệnh cho một khối thử.

Ví dụ

Hãy xem một ví dụ không có bất kỳ lỗi ngoại lệ nào.

# No exception error
try:
   arr = [1, 2, 3, 4, 5]
   # accesing an item from array with a valid index
   two = arr[1]
   print(f"We didn't get any errors {two}")
except IndexError:
   print("The given index is not valid")

Đầu ra

Nếu bạn chạy chương trình trên, bạn sẽ nhận được kết quả sau.

We didn't get any errors 2

Chúng tôi không gặp bất kỳ lỗi ngoại lệ nào. Vì vậy, mã trong khối try được thực thi.

Ví dụ

Hãy xem ví dụ tương tự với một chỉ mục không hợp lệ.

# No exception error
try:
   arr = [1, 2, 3, 4, 5]
   # accesing an item from array with a invalid index
   six = arr[6]
   print(f"We didn't get any errors {six}")
except IndexError:
   print("The given index is not valid")

Đầu ra

Nếu bạn thực thi đoạn mã trên, bạn sẽ nhận được kết quả sau.

The given index is not valid

Chúng tôi nhận được IndexError trong thử khối. Vì vậy, mã trong ngoại trừ khối được thực thi.

Ví dụ

Hãy xem điều gì sẽ xảy ra nếu ngoại trừ không thể xử lý lỗi ngoại lệ.

# No exception error
try:
   arr = [1, 2, 3, 4, 5]
   # accesing an item from array with a invalid index
   six = arr[6]
   print(f"We didn't get any errors {six}")
except ValueError:
   print("The given index is not valid")

Đầu ra

Nếu chạy đoạn mã trên, bạn sẽ nhận được kết quả sau.

---------------------------------------------------------------------------
IndexError                               Traceback (most recent call last)
<ipython-input-11-fe3737d0615b> in <module>
      3    arr = [1, 2, 3, 4, 5]
      4    # accesing an item from array with a invalid index
----> 5    six = arr[6]
      6 print(f"We didn't get any errors {six}")
      7 except ValueError:
IndexError: list index out of range

Chúng tôi có một lỗi. Chúng tôi đã đưa ra ValueError trong khối ngoại trừ. Tuy nhiên, chúng tôi nhận được IndexError điều đó không được xử lý bởi ngoại trừ khối. Vì vậy, chúng tôi có một lỗi. Hãy cẩn thận khi chỉ định lỗi ngoại lệ trong khối ngoại trừ.

Kết luận

Nếu bạn có bất kỳ câu hỏi nào liên quan đến hướng dẫn, hãy đề cập đến chúng trong phần bình luận.