Trong quá trình phát triển ứng dụng Python, việc chương trình gặp sự cố do dữ liệu đầu vào không hợp lệ hoặc tài nguyên hệ thống không sẵn sàng là điều khó tránh khỏi. Để giữ cho ứng dụng hoạt động liên tục mà không bị dừng đột ngột, việc xử lý ngoại lệ (Exception Handling) là một kỹ năng vô cùng quan trọng đối với mọi lập trình viên.
1. Ngoại Lệ (Exception) Là Gì?
Ngoại lệ là những lỗi phát sinh trong quá trình chương trình đang chạy (runtime error), làm ngắt quãng luồng thực thi bình thường của mã nguồn. Khác với lỗi cú pháp (SyntaxError) làm chương trình không thể khởi chạy, ngoại lệ xuất hiện khi cú pháp đúng nhưng hành động thực thi lại gặp sự cố (ví dụ: chia cho số 0, truy cập chỉ số nằm ngoài danh sách, hoặc nhập sai kiểu dữ liệu).
2. Cấu Trúc Khối Lệnh Try-Except Cơ Bản
Để bắt và xử lý ngoại lệ, Python cung cấp cấu trúc try-except. Đoạn mã có nguy cơ phát sinh lỗi sẽ được đặt trong khối try. Nếu ngoại lệ xảy ra, luồng điều khiển ngay lập tức chuyển sang khối except tương ứng để xử lý.
try: Kleva_number = int(input("Nhập một số nguyên: ")) result = 10 / Kleva_number print(f"Kết quả là: {result}") except ValueError: print("Lỗi: Bạn phải nhập một số nguyên hợp lệ!") except ZeroDivisionError: print("Lỗi: Không thể chia một số cho 0!")Trong ví dụ trên, nếu người dùng nhập một chữ cái, lỗi ValueError sẽ bị chặn lại. Nếu nhập số 0, lỗi ZeroDivisionError sẽ được xử lý gọn gàng thay vì làm ứng dụng bị văng.
3. Kết Hợp Khối Else Và Finally
Bên cạnh try và except, Python còn hỗ trợ hai khối mở rộng là else và finally giúp quản lý luồng chương trình chặt chẽ hơn:
- else: Chạy khi khối
tryhoàn thành thành công và không có bất kỳ ngoại lệ nào xảy ra. - finally: Luôn luôn được thi hành, bất kể có lỗi xảy ra hay không. Khối này thường được dùng để giải phóng tài nguyên (như đóng file, đóng kết nối cơ sở dữ liệu).
try: file = open("data.txt", "r") content = file.read() except FileNotFoundError: print("Lỗi: Không tìm thấy file dữ liệu!") else: print("Đọc file thành công!") print(content) finally: print("Hoàn tất quá trình xử lý file.")4. Chủ Động Tự Tạo Ngoại Lệ Với Từ Khóa Raise
Đôi khi, bạn muốn chủ động tạo ra một ngoại lệ khi dữ liệu không đáp ứng quy tắc logic của ứng dụng. Bạn có thể sử dụng từ khóa raise để thực hiện điều này.
def check_age(age): if age < 0: raise ValueError("Tuổi không thể là số âm!") return f"Tuổi của bạn là: {age}" try: print(check_age(-5)) except ValueError as e: print(f"Đã xảy ra lỗi: {e}")Kết Luận
Xử lý ngoại lệ với try-except giúp chương trình Python của bạn trở nên kiên cố, tin cậy và chuyên nghiệp hơn. Việc chủ động lường trước các lỗi phát sinh và bắt chúng đúng cách sẽ bảo vệ trải nghiệm của người dùng và giữ cho hệ thống luôn vận hành mượt mà.
Nguồn tham khảo
- Xử lý ngoại lệ (Exception Handling) trong Python
- Câu lênh try-except - Học Python
- Lỗi ngoại lệ trong Python là lỗi gì? Cách xử lý chi tiết
- Python 16 - Exceptions and Error Handling with try...except
- Có ai giải thích cho mình về Xử lý Ngoại lệ được không?
Nhận xét
Đăng nhận xét