Chương trình thực tế luôn gặp lỗi: file không tồn tại, dữ liệu sai định dạng, mất mạng… Xử lý ngoại lệ (exception) giúp chương trình không “sập” mà xử lý lỗi một cách có kiểm soát.
Cấu trúc try / except
try:
so = int(input("Nhập số: "))
ket_qua = 10 / so
except ValueError:
print("Bạn phải nhập một số!")
except ZeroDivisionError:
print("Không thể chia cho 0!")
else và finally
try:
f = open("data.txt")
except FileNotFoundError:
print("Không tìm thấy file")
else:
print("Mở file thành công") # chạy khi không có lỗi
finally:
print("Luôn chạy dòng này") # dọn dẹp
Bắt nhiều lỗi và lấy thông tin
try:
...
except (ValueError, TypeError) as e:
print(f"Đã xảy ra lỗi: {e}")
Tự phát sinh ngoại lệ
def rut_tien(so_du, tien):
if tien > so_du:
raise ValueError("Số dư không đủ")
return so_du - tien
Nguyên tắc xử lý lỗi tốt
- Chỉ bắt lỗi cụ thể bạn biết cách xử lý, tránh
except:trống. - Không nuốt lỗi im lặng — ít nhất hãy ghi log.
- Dùng finally để dọn tài nguyên (đóng file, kết nối).
Xử lý ngoại lệ đúng cách là dấu hiệu của code chuyên nghiệp, bền bỉ trước những tình huống bất ngờ.
