📱 Học IELTS miễn phí: App IELTS 6.0
Giới thiệu
Mỗi ngày developer nhìn thấy hàng chục error messages. Console đỏ lòm, stack trace dài cả trang — nhưng nếu bạn đọc hiểu tiếng Anh trong đó, việc debug sẽ nhanh hơn gấp 3-5 lần.
Vấn đề là: nhiều developer Việt Nam thấy error message bằng tiếng Anh liền copy nguyên đoạn paste vào Google mà không đọc. Trong khi đó, error message thường nói rõ nguyên nhân — nếu bạn biết cách đọc.
Bài viết này giúp bạn:
- Hiểu cấu trúc của error message & stack trace
- Nắm từ vựng debug quan trọng nhất
- Đọc được error từ Java, Python, JavaScript, SQL — các ngôn ngữ phổ biến
- Tự tin giải thích lỗi bằng tiếng Anh cho team quốc tế
1. Cấu trúc chung của Error Message
Hầu hết error message đều có 3 phần:
| Phần | Ý nghĩa | Ví dụ |
|---|---|---|
| Error Type | Loại lỗi — cho biết category | TypeError, NullPointerException |
| Error Description | Mô tả cụ thể — nguyên nhân | Cannot read property 'name' of undefined |
| Stack Trace | Đường đi — lỗi xảy ra ở đâu | at UserService.getUser (user.js:42) |
Mẹo: Luôn đọc dòng đầu tiên — đó là nơi chứa thông tin quan trọng nhất.
2. Từ vựng Error Messages — Bảng EN-VN
Từ vựng mô tả loại lỗi
| # | Thuật ngữ | IPA | Nghĩa tiếng Việt | Xuất hiện khi… |
|---|---|---|---|---|
| 1 | Exception | /ɪkˈsep.ʃən/ | Ngoại lệ — lỗi xảy ra ngoài dự kiến | Chương trình gặp tình huống bất thường |
| 2 | Error | /ˈer.ər/ | Lỗi — nghiêm trọng hơn exception | Lỗi hệ thống, không nên catch |
| 3 | Warning | /ˈwɔː.nɪŋ/ | Cảnh báo — chưa lỗi nhưng có rủi ro | Code chạy được nhưng có vấn đề tiềm ẩn |
| 4 | Fatal | /ˈfeɪ.təl/ | Nghiêm trọng — chương trình phải dừng | Lỗi không thể phục hồi |
| 5 | Deprecated | /ˈdep.rə.keɪ.tɪd/ | Ngừng hỗ trợ — sẽ bị xóa trong tương lai | Dùng API/function cũ |
| 6 | Unhandled | /ʌnˈhæn.dəld/ | Không được xử lý — không có catch/handler | Exception bị bỏ qua, không ai catch |
Từ vựng mô tả nguyên nhân
| # | Thuật ngữ | IPA | Nghĩa tiếng Việt | Ví dụ error |
|---|---|---|---|---|
| 7 | Undefined | /ˌʌn.dɪˈfaɪnd/ | Chưa được định nghĩa | “Cannot read property of undefined” |
| 8 | Null | /nʌl/ | Giá trị rỗng — không tồn tại | “NullPointerException” |
| 9 | Invalid | /ɪnˈvæl.ɪd/ | Không hợp lệ | “Invalid argument: expected number, got string” |
| 10 | Unexpected | /ˌʌn.ɪkˈspek.tɪd/ | Không mong đợi | “Unexpected token ‘<’ in JSON” |
| 11 | Missing | /ˈmɪs.ɪŋ/ | Thiếu — không tìm thấy | “Missing required field: email” |
| 12 | Denied | /dɪˈnaɪd/ | Bị từ chối | “Permission denied: cannot write to /etc/” |
| 13 | Exceeded | /ɪkˈsiː.dɪd/ | Vượt quá giới hạn | “Rate limit exceeded — retry after 60 seconds” |
| 14 | Timeout | /ˈtaɪm.aʊt/ | Hết thời gian chờ | “Connection timeout after 30000ms” |
| 15 | Refused | /rɪˈfjuːzd/ | Bị từ chối kết nối | “Connection refused: localhost:5432” |
| 16 | Overflow | /ˌəʊ.vəˈfləʊ/ | Tràn — vượt quá bộ nhớ/kích thước | “Stack overflow — check for infinite recursion” |
Từ vựng trong Stack Trace
| # | Thuật ngữ | IPA | Nghĩa tiếng Việt | Ví dụ |
|---|---|---|---|---|
| 17 | Stack Trace | /stæk treɪs/ | Vết ngăn xếp — đường đi của lỗi | “Check the stack trace for the root cause.” |
| 18 | Root Cause | /ruːt kɔːz/ | Nguyên nhân gốc | “The root cause is a missing null check.” |
| 19 | Thrown | /θrəʊn/ | Được ném ra — lỗi được phát sinh | “Exception thrown at line 42 in UserService.” |
| 20 | Caught | /kɔːt/ | Được bắt — lỗi được xử lý | “The exception was caught by the global handler.” |
| 21 | Propagate | /ˈprɒp.ə.ɡeɪt/ | Lan truyền — lỗi đi lên caller | “The error propagates up the call stack.” |
| 22 | Traceback | /ˈtreɪs.bæk/ | Truy ngược — stack trace trong Python | “Traceback (most recent call last):” |
3. Error Messages phổ biến — Phân tích chi tiết
JavaScript / Node.js
Cách đọc:
- TypeError → Lỗi kiểu dữ liệu
- Cannot read properties of undefined → Bạn đang truy cập property trên một biến chưa được gán giá trị
- (reading ’name’) → Property bạn đang cố đọc là
name - at getUser (user.js:15) → Lỗi ở file
user.js, dòng 15, trong functiongetUser
Cách giải thích cho team:
“We have a TypeError in the getUser function — it’s trying to access the
nameproperty on an undefined variable at line 15. Looks like the user object isn’t being fetched correctly.”
Python
Cách đọc:
- Traceback (most recent call last) → Stack trace Python — đọc từ dưới lên
- AttributeError → Truy cập attribute không tồn tại
- ‘NoneType’ object has no attribute ‘price’ → Một phần tử trong
itemslàNone, không có.price - Dòng cuối cùng trong traceback là nơi lỗi xảy ra thực sự
Cách giải thích cho team:
“There’s an AttributeError in calculate_total — one of the items in the list is None, so it doesn’t have a price attribute. We need to add a null check before iterating.”
Java
Cách đọc:
- NullPointerException → Truy cập method/property trên object null
- Cannot invoke “String.length()” because “str” is null → Biến
strlà null, không gọi được.length() - at UserService.validateName (line 67) → Lỗi ở method
validateName, dòng 67
Cách giải thích cho team:
“We’re getting a NullPointerException in validateName — the input string is null. We should add a null check or use Optional.”
SQL
Cách đọc:
- duplicate key → Giá trị trùng lặp
- violates unique constraint → Vi phạm ràng buộc duy nhất
- “users_email_key” → Tên constraint bị vi phạm
- DETAIL → Cho biết cụ thể email nào bị trùng
Cách giải thích cho team:
“The insert failed because the email already exists in the database — it violates the unique constraint on the email column. We need to handle this with an upsert or check before inserting.”
4. Các cụm từ Debug hay dùng
Khi thảo luận về bug với team quốc tế, bạn cần những cụm từ này:
| Tình huống | Tiếng Anh | Ví dụ |
|---|---|---|
| Mô tả lỗi | “We’re seeing a…” | “We’re seeing a timeout error on the payment endpoint.” |
| Nêu nguyên nhân | “The root cause is…” | “The root cause is a missing index on the orders table.” |
| Đã tìm ra lỗi | “I’ve tracked it down to…” | “I’ve tracked it down to a race condition in the cache layer.” |
| Đề xuất fix | “The fix is to…” | “The fix is to add a null check before accessing the property.” |
| Lỗi khó tái hiện | “It’s intermittent…” | “It’s intermittent — happens only under high load.” |
| Hỏi thêm info | “Can you share the full stack trace?” | “Can you share the full stack trace and the request payload?” |
| Lỗi đã fix | “The issue has been resolved…” | “The issue has been resolved in commit abc123.” |
5. HTTP Status Codes — Từ vựng liên quan
Backend developer gặp HTTP errors mỗi ngày:
| Code | Tên | IPA | Nghĩa | Khi nào gặp |
|---|---|---|---|---|
| 400 | Bad Request | /bæd rɪˈkwest/ | Yêu cầu sai format | Request body thiếu field hoặc sai kiểu |
| 401 | Unauthorized | /ʌnˈɔː.θər.aɪzd/ | Chưa xác thực | Thiếu token hoặc token hết hạn |
| 403 | Forbidden | /fəˈbɪd.ən/ | Không có quyền | Đã login nhưng không đủ permission |
| 404 | Not Found | /nɒt faʊnd/ | Không tìm thấy | URL sai hoặc resource không tồn tại |
| 429 | Too Many Requests | /tuː ˈmen.i rɪˈkwests/ | Quá nhiều request | Bị rate limit |
| 500 | Internal Server Error | /ɪnˈtɜː.nəl ˈsɜː.vər ˈer.ər/ | Lỗi server nội bộ | Exception không được handle |
| 502 | Bad Gateway | /bæd ˈɡeɪt.weɪ/ | Cổng lỗi | Upstream server không phản hồi |
| 503 | Service Unavailable | /ˈsɜː.vɪs ˌʌn.əˈveɪ.lə.bəl/ | Dịch vụ không khả dụng | Server quá tải hoặc đang maintenance |
| 504 | Gateway Timeout | /ˈɡeɪt.weɪ ˈtaɪm.aʊt/ | Hết thời gian chờ | Upstream server phản hồi quá chậm |
Practice — Bài tập
Bài 1: Đọc error message và trả lời
- Loại lỗi là gì?
- Nguyên nhân có thể là gì?
- Giải thích bằng tiếng Anh cho team.
Bài 2: Dịch mô tả lỗi sang tiếng Anh
- “Lỗi timeout khi gọi API thanh toán”
- “Biến user là null, không truy cập được property email”
- “Lỗi xảy ra không thường xuyên, chỉ khi tải cao”
- “Nguyên nhân gốc là thiếu index trên cột order_id”
Đáp án
Bài 1:
- ConnectionRefusedError — lỗi kết nối bị từ chối
- Database server chưa chạy, sai port, hoặc firewall chặn
- “We’re getting a ConnectionRefusedError when trying to connect to the database at line 18. The database server might be down or the port could be blocked.”
Bài 2:
- “We’re seeing a timeout error when calling the payment API.”
- “The user variable is null — cannot access the email property.”
- “The error is intermittent — it only occurs under high load.”
- “The root cause is a missing index on the order_id column.”
Kết luận
Error messages không phải kẻ thù — chúng là đồng minh giúp bạn debug nhanh hơn. Chìa khóa là đọc hiểu tiếng Anh trong error thay vì copy-paste mù quáng vào Google.
3 bước đọc error hiệu quả:
- Đọc dòng đầu → Loại lỗi + mô tả nguyên nhân
- Đọc stack trace → Tìm file & dòng code của bạn (bỏ qua internal/library frames)
- Giải thích bằng lời → Nếu bạn có thể mô tả lỗi bằng tiếng Anh, bạn đã hiểu nó
💪 Developer giỏi debug không phải nhờ Google nhanh — mà nhờ đọc error message kỹ!