Python Thử/Ngoại trừ & Xử lý lỗi

Ngăn chặn các tập lệnh Python của bạn bị lỗi. Tìm hiểu các khối thử, ngoại trừ, cuối cùng và cách đưa ra các ngoại lệ tùy chỉnh đúng cách.

Thử trong Trình chỉnh sửa

Tổng quan

Trong thế giới lập trình thực tế, lỗi là điều hoàn toàn không thể tránh khỏi. Các tệp có thể bị xóa, kết nối mạng có thể bị ngắt hoặc người dùng có thể nhập một chữ cái khi tập lệnh của bạn mong đợi một số. Nếu những tình huống này xảy ra mà không có biện pháp bảo vệ, Python sẽ tạm dừng thực thi và đưa ra Ngoại lệ (lỗi thời gian chạy), làm hỏng toàn bộ chương trình. Xử lý lỗi là nghệ thuật dự đoán và quản lý những lỗi này một cách khéo léo.

Nền tảng của việc quản lý lỗi trong Python là cấu trúc khối `try` và `Exception`. Bạn đặt mã nguy hiểm tiềm tàng bên trong khối `try`. Python sẽ cố gắng thực thi nó. Nếu xảy ra lỗi, thay vì gặp sự cố, Python sẽ chặn ngoại lệ và ngay lập tức nhảy xuống để thực thi mã chứa trong khối `ngoại trừ`. Điều này cho phép chương trình khôi phục, hiển thị thông báo lỗi thân thiện và tiếp tục chạy.

Đó là một phương pháp thực hành quan trọng nhất để nắm bắt các ngoại lệ cụ thể, có mục tiêu thay vì viết một khối `ngoại trừ:` chung chung. Ví dụ: việc nắm bắt `FileNotFoundError` hoặc `ValueError` đảm bảo rõ ràng rằng bạn đang xử lý chính xác vấn đề mà bạn đã dự đoán, thay vì vô tình che giấu các lỗi không liên quan (chẳng hạn như lỗi cú pháp) mà bạn thực sự cần biết.

Python cũng cung cấp một khối `else` tùy chọn, khối này chỉ thực thi nếu khối `try` hoàn thành hoàn toàn thành công mà không gây ra bất kỳ lỗi nào. Đây là nơi hoàn hảo để đưa ra logic hoàn toàn phụ thuộc vào sự thành công của hoạt động nguy hiểm. Ngoài ra, khối `cuối cùng` cung cấp cách thực thi mã bất kể điều gì xảy ra—cho dù có xảy ra lỗi hay không. Khối `cuối cùng` rất quan trọng cho các hành động dọn dẹp, chẳng hạn như đóng kết nối cơ sở dữ liệu hoặc giải phóng khóa tệp.

Ngoài việc phát hiện lỗi, Python còn cho phép các nhà phát triển kích hoạt chúng một cách rõ ràng bằng cách sử dụng từ khóa `raise`. Đưa ra một ngoại lệ cho phép bạn thực thi các ràng buộc nghiêm ngặt trong logic của mình, từ chối dữ liệu không hợp lệ trước khi nó làm hỏng trạng thái ứng dụng của bạn. Bằng cách xác định các lớp ngoại lệ tùy chỉnh kế thừa từ lớp `Exception` cơ sở của Python, các nhà phát triển có thể tạo hệ thống phân cấp lỗi theo miền cụ thể cao cho các ứng dụng doanh nghiệp lớn.

Đầu ra mã & thực thi

Tạo sự an toàn về cấu trúc khi tương tác với các cấu trúc tệp nguy hiểm hoặc không tồn tại.

def divide_numbers(a, b):
    try:
        result = a / b
    except ZeroDivisionError:
        return "Error: Cannot divide by zero!"
    except TypeError:
        return "Error: Both arguments must be numbers."
    else:
        return f"The result is {result}"
    finally:
        print("Execution completed.")

print(divide_numbers(10, 2))
print(divide_numbers(10, 0))
Đầu ra thiết bị đầu cuối
Execution completed.
The result is 5.0
Execution completed.
Error: Cannot divide by zero!

Triển khai từng bước

  • Xác thực việc gửi biểu mẫu của người dùng
  • Đảm bảo các yêu cầu mạng không gặp sự cố khi hết thời gian chờ
  • Đóng các kết nối cơ sở dữ liệu một cách an toàn trong khối cuối cùng

Câu hỏi thường gặp

Từ khóa "tăng" là gì?

Từ khóa raise được sử dụng để đưa ra một ngoại lệ có mục đích. Bạn có thể xác định loại lỗi nào sẽ xảy ra và văn bản sẽ in cho người dùng.

Chủ đề liên quan

Tài nguyên Python được đề xuất

Mở rộng kiến thức của bạn với các hướng dẫn tương tác, bảng ghi chú và so sánh mã có liên quan.