Cách xử lý ngoại lệ trong Python (Thử-Ngoại trừ-Cuối cùng)
Tìm hiểu cách xử lý các ngoại lệ trong Python bằng cách sử dụng các khối thử, ngoại trừ, khác và cuối cùng. Viết mã Python không có lỗi và chống lỗi.
Tổng quan
Phần mềm mạnh mẽ phải được chuẩn bị để xử lý các tình huống không mong muốn, chẳng hạn như thiếu tệp, đầu vào của người dùng không hợp lệ, lỗi cơ sở dữ liệu hoặc gián đoạn mạng. Khi xảy ra lỗi trong Python, nó sẽ tạo ra một ngoại lệ. Nếu không được xử lý, các ngoại lệ sẽ dừng chương trình của bạn ngay lập tức và in ngăn xếp truy nguyên.
Công cụ chính của Python để quản lý lỗi thời gian chạy là khối `try-ngoại trừ`. Bạn đặt mã có thể gây ra lỗi bên trong khối `try` và xác định mã xử lý lỗi bên trong một hoặc nhiều khối `ngoại trừ`. Bạn nên chỉ định lớp ngoại lệ chính xác (như `ValueError` hoặc `ZeroDivisionError`), vì việc bắt tất cả các ngoại lệ chung (`ngoại trừ:`) có thể che giấu lỗi.
Để làm cho luồng ngoại lệ của bạn diễn đạt rõ ràng hơn, Python cung cấp hai khối bổ sung: `else` và `finally`. Khối `else` chỉ thực thi nếu không có ngoại lệ nào được đưa ra trong khối `try`, điều này rất hữu ích đối với mã chỉ nên chạy khi thành công. Khối `cuối cùng` thực thi *luôn luôn*, bất kể ngoại lệ có xảy ra hay không, khiến nó trở thành nơi hoàn hảo để dọn dẹp như đóng tệp hoặc kết nối cơ sở dữ liệu.
Đầu ra mã & thực thi
Tập lệnh này thể hiện khả năng xử lý lỗi mạnh mẽ trong Python bằng cách sử dụng thử, ngoại trừ, khác và cuối cùng.
def divide_numbers(a, b):
try:
# Code that might raise an exception
result = a / b
except ZeroDivisionError:
# Handling a specific exception
print("Error: Cannot divide by zero!")
except TypeError:
# Handling another exception type
print("Error: Inputs must be numbers!")
else:
# Run only if try block succeeded
print(f"Success! Result of {a}/{b} is {result}")
finally:
# Runs no matter what
print("Division attempt completed.")
divide_numbers(10, 2)
print("---")
divide_numbers(10, 0)Success! Result of 10/2 is 5.0
Division attempt completed.
---
Error: Cannot divide by zero!
Division attempt completed.Triển khai từng bước
- Đặt mã có thể bị lỗi bên trong khối thử.
- Nắm bắt các loại lỗi cụ thể bằng các khối ngoại trừ ExceptionType: để xử lý lỗi một cách khéo léo.
- Sử dụng else cho mã chỉ được thực thi trên các khối thử thành công.
- Sử dụng cuối cùng để đảm bảo các hành động dọn dẹp được thực hiện bất kể lỗi.
Câu hỏi thường gặp
Tôi có thể bắt nhiều ngoại lệ trong một khối ngoại trừ không?
Có, bạn có thể chuyển chúng dưới dạng một bộ dữ liệu: ngoại trừ (ValueError, TypeError) dưới dạng e:.
Làm cách nào để đưa ra các ngoại lệ của riêng tôi?
Sử dụng từ khóa raise theo sau là trường hợp ngoại lệ: raise ValueError("Giá trị cấu hình không hợp lệ").
Chủ đề liên quan
Tìm hiểu cách chuyển đổi một chuỗi thành số nguyên trong Python bằng hàm int(). Xử lý lỗi một cách an toàn và chuyển đổi số từ nhị phân, bát phân hoặc thập lục phân.
Cách đọc tệp bằng PythonTìm hiểu cách đọc tệp bằng Python. Nắm vững câu lệnh mở, dòng đọc, dòng đọc và xử lý các ngoại lệ tệp một cách an toàn.
Cách ghi vào tệp bằng PythonTìm hiểu cách viết văn bản vào tệp bằng Python. Nắm vững sự khác biệt giữa chế độ ghi ("w") và chắp thêm ("a") bằng trình quản lý bối cảnh an toàn.
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.
Vòng lặp Python
Tìm hiểu cách sử dụng vòng lặp Python để lặp lại dữ liệu. Nắm vững các phương pháp hay nhất về vòng lặp for, while, ngắt, tiếp tục và lặp bằng các ví dụ tương tác.
Bảng cheat phương thức chuỗi Python
Hướng dẫn tham khảo đầy đủ về thao tác chuỗi Python. Làm chủ định dạng, tìm kiếm, phân tách, thay thế và kiểm tra thuộc tính chuỗi.
Python vs JavaScript: Ngôn ngữ lập trình nào tốt nhất?
So sánh toàn diện giữa Python và JavaScript. Khám phá sự khác biệt về cú pháp, hiệu suất, trường hợp sử dụng (phụ trợ so với giao diện người dùng) và các ví dụ về mã hóa.