Explore all courses in this category.
Explore all courses in this category.
Nguyễn Đình Cường
0 comment
09 Nov, 2026
Nhiều người mới thấy chữ đỏ đầy màn hình là hoảng và bỏ qua. Thực ra thông báo lỗi là lời chỉ dẫn miễn phí từ máy tính, thường cho biết chính xác lỗi gì và ở đâu. Học đọc nó nhanh chóng là một trong những kỹ năng đáng giá nhất.
Hầu hết thông báo có ba phần thông tin quan trọng:
NameError, TypeError.Xem ví dụ trong Python:
def tinh_tuoi(nam_sinh):
return 2024 - nam_sinh
print(tinh_tuoi("1999"))Chạy sẽ cho kết quả như sau:
Traceback (most recent call last):
File "demo.py", line 4, in <module>
print(tinh_tuoi("1999"))
File "demo.py", line 2, in tinh_tuoi
return 2024 - nam_sinh
TypeError: unsupported operand type(s) for -: 'int' and 'str'Dòng cuối cùng là quan trọng nhất: TypeError với mô tả "không hỗ trợ phép trừ giữa int và str". Ngay lập tức bạn biết: đang lấy số trừ chuỗi. Các dòng phía trên là vết ngăn xếp lời gọi (stack trace), cho biết chuỗi hàm đã gọi nhau để đến chỗ lỗi. Dòng sát ngay phía trên dòng cuối chỉ đúng nơi lỗi xảy ra: file demo.py, dòng 2, trong hàm tinh_tuoi. Nguyên nhân gốc thực ra nằm ở dòng 4, nơi truyền vào chuỗi thay vì số.
| Lỗi | Thường có nghĩa là |
|---|---|
| SyntaxError | Sai cú pháp: thiếu ngoặc, dấu hai chấm, thụt dòng |
| NameError | Dùng tên biến hoặc hàm chưa được định nghĩa (hoặc gõ sai tên) |
| TypeError | Dùng sai kiểu dữ liệu cho phép toán hoặc hàm |
| ValueError | Kiểu đúng nhưng giá trị không hợp lệ, như int("abc") |
| IndexError | Truy cập chỉ số ngoài phạm vi danh sách |
| KeyError | Khóa không tồn tại trong từ điển |
| AttributeError | Đối tượng không có thuộc tính hay phương thức đó |
| ZeroDivisionError | Chia cho 0 |
| FileNotFoundError | Đường dẫn file sai hoặc file không tồn tại |
JavaScript có những lỗi tương tự với tên khác, ví dụ ReferenceError (biến chưa khai báo) và TypeError: Cannot read properties of undefined khi bạn truy cập thuộc tính của giá trị không tồn tại.
Ví dụ lỗi ở dòng 2 nhưng nguyên nhân là dữ liệu sai từ dòng 4. Hãy đi ngược theo vết ngăn xếp để tìm nơi giá trị sai thực sự được tạo ra.
def doc_tuoi(chuoi):
try:
return int(chuoi)
except ValueError:
print("Giá trị không phải số nguyên:", chuoi)
return None
print(doc_tuoi("19"))
print(doc_tuoi("mười chín"))Bắt lỗi cụ thể thay vì bắt tất cả; bắt mọi lỗi một cách mù quáng sẽ che giấu vấn đề thật.
Với web, lỗi hiện trong tab Console của DevTools (F12). Ví dụ:
const nguoi = { ten: "Lan" };
console.log(nguoi.dia_chi.thanh_pho);
// Uncaught TypeError: Cannot read properties of undefined (reading 'thanh_pho')Thông báo nói: bạn đang đọc thuộc tính thanh_pho của một giá trị undefined. Vì nguoi.dia_chi không tồn tại nên nó là undefined. Cách sửa tùy ý định: kiểm tra trước, hoặc dùng toán tử truy cập tùy chọn:
console.log(nguoi.dia_chi?.thanh_pho); // undefined, không lỗi
console.log(nguoi.dia_chi?.thanh_pho ?? "Chưa có");Một số thông báo hay gặp khác:
ReferenceError: x is not defined: dùng biến chưa khai báo hoặc gõ sai tên.SyntaxError: Unexpected token: thiếu hoặc thừa ký tự, thường là ngoặc hoặc dấu phẩy.404 (Not Found) trong tab Network: đường dẫn tài nguyên sai.Mỗi dòng lỗi trong Console đều có liên kết đến file và dòng gây lỗi; bấm vào đó để nhảy thẳng tới code. Đây là phím tắt tiết kiệm rất nhiều thời gian.
Thông báo lỗi là người bạn, không phải kẻ thù. Hãy tập thói quen đọc dòng cuối, xác định loại lỗi, nhìn đúng dòng, kiểm tra giá trị biến. Chỉ sau một thời gian, bạn sẽ nhận ra phần lớn lỗi quen thuộc chỉ trong vài giây.
Bạn có thể tiếp tục hành trình với những khóa học lập trình trên codebem.com, học theo tốc độ của riêng mình.
Nguyễn Đình Cường
0 comment