Sử Dụng try-except Để Bắt Lỗi Trong Python

Tạo bởi Hoàng Vũ, chỉnh sửa cuối lúc 2 tháng 2, 2025

Khi viết chương trình, có những lỗi không thể tránh khỏi, chẳng hạn như lỗi nhập sai dữ liệu, lỗi chia cho 0 hoặc lỗi đọc file không tồn tại. Để chương trình không bị dừng đột ngột, Python cung cấp câu lệnh try-except giúp xử lý lỗi một cách an toàn.

1. Cấu Trúc try-except Cơ Bản

try:
    # Đoạn code có thể gây lỗi
    risky_code()
except ExceptionType:
    # Xử lý lỗi khi xảy ra
    handle_error()
  • try: Chứa đoạn code có thể gây lỗi.
  • except: Chạy khi có lỗi xảy ra.
  • ExceptionType: (Tuỳ chọn) Xác định loại lỗi cụ thể.

2. Ví Dụ try-except Cơ Bản

Ví dụ 1: Xử lý lỗi chia cho 0 (ZeroDivisionError)

try:
    x = 10 / 0  # Lỗi chia cho 0
except ZeroDivisionError:
    print("Lỗi: Không thể chia cho 0!")

Kết quả:

Lỗi: Không thể chia cho 0!

Ví dụ 2: Bắt lỗi nhập sai kiểu dữ liệu (ValueError)

try:
    num = int(input("Nhập một số: "))  # Nếu nhập chữ, sẽ lỗi
    print("Số bạn nhập:", num)
except ValueError:
    print("Lỗi: Vui lòng nhập một số hợp lệ!")

Kết quả:

Nhập một số: abc
Lỗi: Vui lòng nhập một số hợp lệ!

3. Bắt Nhiều Loại Lỗi

Có thể dùng nhiều except để xử lý từng loại lỗi khác nhau.

try:
    x = int(input("Nhập số: "))  
    y = 10 / x  
except ValueError:
    print("Lỗi: Bạn phải nhập một số nguyên!")
except ZeroDivisionError:
    print("Lỗi: Không thể chia cho 0!")

Kết quả 1 (Nhập a)

Lỗi: Bạn phải nhập một số nguyên!

Kết quả 2 (Nhập 0)

Lỗi: Không thể chia cho 0!

4. Sử Dụng except Exception Để Bắt Tất Cả Lỗi

Dùng except Exception để bắt mọi lỗi mà không cần chỉ rõ từng loại lỗi.

try:
    x = int(input("Nhập số: "))  
    y = 10 / x  
except Exception as e:
    print("Lỗi xảy ra:", e)

Kết quả (Nhập 0)

Lỗi xảy ra: division by zero

Lưu ý: Không nên bắt tất cả lỗi trừ khi cần xử lý chung.

5. Sử Dụng elsefinally

  • else: Chạy khi không có lỗi.
  • finally: Luôn chạy, dù có lỗi hay không.
try:
    x = int(input("Nhập số: "))  
    y = 10 / x  
except ZeroDivisionError:
    print("Lỗi: Không thể chia cho 0!")
except ValueError:
    print("Lỗi: Bạn phải nhập số nguyên!")
else:
    print("Kết quả:", y)  # Chỉ chạy nếu không có lỗi
finally:
    print("Chương trình kết thúc.")  # Luôn chạy

Kết quả (Nhập 2)

Kết quả: 5.0
Chương trình kết thúc.

Kết quả (Nhập 0)

Lỗi: Không thể chia cho 0!
Chương trình kết thúc.

6. Tóm Tắt

Cấu trúc Ý nghĩa
try Chứa code có thể gây lỗi
except Xử lý lỗi khi xảy ra
except TypeError Bắt lỗi cụ thể
except Exception as e Bắt mọi lỗi và lấy thông tin lỗi
else Chạy khi không có lỗi
finally Luôn chạy dù có lỗi hay không

Việc sử dụng try-except giúp chương trình chạy mượt mà hơn và dễ dàng xử lý lỗi khi làm việc với dữ liệu không lường trước được.

Website Logo

Với hơn 10 năm kinh nghiệm lập trình web và từng làm việc với nhiều framework, ngôn ngữ như PHP, JavaScript, React, jQuery, CSS, HTML, CakePHP, Laravel..., tôi hy vọng những kiến thức được chia sẻ tại đây sẽ hữu ích và thiết thực cho các bạn.

Bình luận

Website Logo

Chào, tôi là Vũ. Đây là blog hướng dẫn lập trình của tôi.

Liên hệ công việc qua email dưới đây.

lhvuctu@gmail.com

Chúng Tôi Trên

Bạn đang muốn học về lập trình website?

Bạn cần nâng cao kiến thức chuyên nghiệp hơn để nâng cao cơ hội nghề nghiệp? Liên hệ