Skip to content
TechJunior
Menu
  • Đổi mới giáo dục
  • Nuôi dạy con cái
  • Công nghệ và đời sống
  • Thuật ngữ Lập trình
Menu

Python Exception Handling – Xử lý ngoại lệ trong Python

Posted on February 21, 2025

Trong lập trình, lỗi (error) là điều không thể tránh khỏi. Nếu không xử lý tốt, chương trình có thể bị dừng đột ngột, gây ảnh hưởng đến trải nghiệm người dùng và hiệu suất hệ thống. Trong Python, exception handling là một cơ chế giúp phát hiện và xử lý lỗi một cách an toàn mà không làm gián đoạn toàn bộ chương trình.


1. Exception là gì?

Exception (ngoại lệ) là những lỗi xảy ra trong quá trình chạy chương trình. Chúng khác với lỗi cú pháp (syntax errors), vì lỗi cú pháp xảy ra ngay khi bạn viết mã sai, còn ngoại lệ chỉ xảy ra khi chương trình chạy.

Một số lỗi ngoại lệ phổ biến trong Python:

Ngoại lệMô tả
ZeroDivisionErrorChia một số cho 0.
ValueErrorKiểu dữ liệu không hợp lệ.
FileNotFoundErrorKhông tìm thấy tệp tin.
IndexErrorTruy cập phần tử ngoài phạm vi danh sách.
KeyErrorTruy cập một khóa không tồn tại trong dictionary.
TypeErrorSử dụng kiểu dữ liệu sai trong phép toán.

Ví dụ lỗi khi chia một số cho 0:

print(10 / 0)  # Lỗi ZeroDivisionError

Lỗi xảy ra ngay lập tức, khiến chương trình dừng hoạt động.


2. Xử lý ngoại lệ với try-except

Để tránh chương trình bị dừng, ta có thể sử dụng try-except để bắt lỗi và xử lý chúng.

try:
print(10 / 0) # Thử thực hiện phép chia
except ZeroDivisionError:
print("Lỗi: Không thể chia một số cho 0!")

Khi có lỗi xảy ra, chương trình không bị crash, mà thay vào đó, except sẽ được kích hoạt để xử lý lỗi.

Ví dụ bắt lỗi khi nhập sai dữ liệu:

try:
age = int(input("Nhập tuổi của bạn: ")) # Yêu cầu nhập số nguyên
print(f"Tuổi của bạn là {age}")
except ValueError:
print("Lỗi: Bạn phải nhập một số nguyên!")

Nếu người dùng nhập chữ thay vì số, ValueError sẽ được bắt, và chương trình vẫn tiếp tục chạy bình thường.


3. Xử lý nhiều ngoại lệ với nhiều except

Python cho phép bạn xử lý nhiều loại lỗi khác nhau bằng cách dùng nhiều except:

try:
x = int(input("Nhập một số: ")) # Người dùng nhập số
print(10 / x) # Thực hiện phép chia
except ZeroDivisionError:
print("Lỗi: Không thể chia một số cho 0!")
except ValueError:
print("Lỗi: Bạn phải nhập một số nguyên!")

Cách hoạt động:

  1. Nếu người dùng nhập 0 → ZeroDivisionError.
  2. Nếu người dùng nhập ký tự thay vì số → ValueError.
  3. Nếu không có lỗi → Chương trình chạy bình thường.

4. Dùng else và finally

Ngoài try-except, Python còn có hai thành phần đặc biệt:

  • else: Chạy khi không có lỗi xảy ra.
  • finally: Luôn chạy, dù có lỗi hay không.

Ví dụ:

try:
file = open("data.txt", "r") # Mở file
content = file.read()
print(content)
except FileNotFoundError:
print("Lỗi: Không tìm thấy tệp tin!")
else:
print("Tệp đọc thành công!") # Chỉ chạy nếu không có lỗi
finally:
print("Đóng tệp tin...") # Luôn chạy
file.close()

finally đảm bảo tài nguyên luôn được giải phóng.


5. Tạo Exception tùy chỉnh với raise

Python cho phép bạn tạo lỗi tùy chỉnh bằng raise, giúp kiểm soát lỗi theo logic riêng.

Ví dụ: Kiểm tra độ tuổi trước khi cho phép đăng ký:

def check_age(age):
if age < 18:
raise ValueError("Tuổi phải lớn hơn hoặc bằng 18!") # Tạo ngoại lệ tùy chỉnh
return "Hợp lệ!"

try:
print(check_age(15)) # Nhập tuổi <18
except ValueError as e:
print(f"Lỗi: {e}")

raise giúp phát hiện lỗi sớm và ngăn nhập dữ liệu không hợp lệ.


6. Bắt mọi ngoại lệ bằng Exception

Nếu bạn muốn bắt tất cả loại lỗi, có thể dùng Exception:

try:
x = int(input("Nhập số: "))
print(10 / x)
except Exception as e:
print(f"Lỗi xảy ra: {e}") # In ra lỗi cụ thể

Tuy nhiên, không nên lạm dụng vì có thể che giấu lỗi quan trọng.


7. Tóm tắt kiến thức quan trọng

  • Dùng try-except để bắt lỗi và xử lý an toàn.
  • Sử dụng nhiều except để xử lý từng loại lỗi cụ thể.
  • Dùng else và finally để kiểm soát luồng chương trình tốt hơn.
  • Dùng raise để tạo ngoại lệ tùy chỉnh, giúp kiểm tra dữ liệu đầu vào.
  • Bắt tất cả ngoại lệ với Exception, nhưng không nên lạm dụng.

Bạn đã từng gặp lỗi nào trong Python mà không biết cách xử lý chưa? Hãy chia sẻ để cùng thảo luận!

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Recent Posts

  • 🔥 Danh Sách Liên Kết Trong C – Hướng Dẫn Toàn Diện Từ Cơ Bản Đến Nâng Cao! 🔥
  • 🔥 Con trỏ trong C – Từ Cơ Bản Đến Nâng Cao🔥
  • XU HƯỚNG NỔI BẬT TRONG ỨNG DỤNG TRÍ TUỆ NHÂN TẠO (AI) TRONG DỊCH THUẬT
  • 10 công cụ AI tốt nhất cho giáo viên trong 2025
  • Unitree G1 – Robot Hình Người Đầu Tiên Có Thể “Bật Tôm”! 🤖🔥

Categories

  • Uncategorized
©2025 TechJunior | Design: Newspaperly WordPress Theme