Python:
Xử lý lỗi

Làm thế nào:

# Khối try-except cơ bản
try:
    # code có rủi ro
    number = int(input("Nhập một số: "))
except ValueError:
    # xử lý lỗi
    print("Đó không phải là một số!")

# Chỉ định nhiều ngoại lệ
try:
    # code có thể gây ra các ngoại lệ khác nhau
    result = 10 / int(input("Nhập một số chia: "))
except ZeroDivisionError:
    print("Ôi! Không thể chia cho số không.")
except ValueError:
    print("Mình cần một số, bạn ơi.")

# Sử dụng else và finally
try:
    number = int(input("Nhập một số để bình phương: "))
except ValueError:
    print("Mình đã nói là một số!")
else:
    # không có lỗi nào xảy ra
    print("Số của bạn khi bình phương là:", number**2)
finally:
    # luôn luôn thực thi
    print("Cảm ơn bạn đã thử nghiệm!")

Kết quả mẫu khi nhập một số không hợp lệ cho khối đầu tiên:

Nhập một số: hello
Đó không phải là một số!

Tìm hiểu sâu hơn

Từ thời điểm bình minh của lập trình, xử lý lỗi đã là một phần quan trọng. Cách tiếp cận ban đầu còn sơ khai, như kiểm tra điều kiện trước mỗi hoạt động có rủi ro. Cú pháp try-except của Python đã được phát triển dựa trên di sản của việc xử lý ngoại lệ trong các ngôn ngữ cũ hơn như C++ và Java, đơn giản hóa quá trình này.

Khi bạn try một khối code, Python sẽ theo dõi bất kỳ ngoại lệ nào. Nếu một lỗi xuất hiện, khối except sẽ bắt lấy nó. Bạn có thể cụ thể về những ngoại lệ mà bạn bắt, hoặc bắt hết tất cả với một except trống. Tuy nhiên, cụ thể từng cái là cách tiếp cận tốt hơn – nó chính xác, không phải là lưới bắt tất cả.

elsefinally là những phần phụ trong khái niệm này. Khối else sẽ chạy nếu khối try không có lỗi. finally là người bạn đáng tin cậy luôn chạy bất kể chuyện gì xảy ra - hãy nghĩ về các hoạt động dọn dẹp.

Có sự thay thế? Chắc chắn là có. Một số ngôn ngữ sử dụng mã trả về thay vì ngoại lệ. Bạn cũng có thể gặp các câu lệnh with dùng để xử lý tài nguyên hoặc assertions kiểm tra điều kiện trong quá trình phát triển. Nhưng khi chúng ta nói về chiến lược xử lý lỗi vững chắc, mô hình try-catch nổi bật với độ rõ ràng và cấu trúc của nó.

Xem thêm

Dưới đây là một số tài nguyên bổ sung tốt để đào sâu thêm: