Xử lý lỗi và các trường hợp ngoại lệ

Cuộc gọi đánh thức lúc 3 giờ sáng

Trong bài học trước, chúng ta đã tìm hiểu về xử lý dữ liệu và quy trình làm việc nhiều bước. Giờ hãy xây dựng trên nền tảng đó. Hệ thống tự động hóa của bạn đã hoạt động trơn tru trong ba tuần. Bạn gần như đã quên mất nó. Rồi lúc 3 giờ sáng, điện thoại của bạn rung lên: "42 hóa đơn trùng lặp đã được gửi cho khách hàng."

Chuyện gì đã xảy ra? API thanh toán đã gặp sự cố tạm thời. Hệ thống tự động hóa của bạn đã thử lại, nhưng logic thử lại bị sai. Mỗi lần thử lại không kiểm tra xem hóa đơn đã được gửi hay chưa. Vì vậy, mỗi lần thử lại tạo ra một hóa đơn mới. Và hệ thống tự động hóa của bạn đã gửi từng hóa đơn đó một cách đều đặn.

Đây không phải là một trường hợp giả định. Các lỗi trong tự động hóa gây ra thiệt hại thực sự: Phí trùng lặp, bỏ lỡ thông tin liên lạc, dữ liệu bị hỏng, email gây khó xử cho khách hàng. Và những lỗi tồi tệ nhất là những lỗi mà không ai nhận ra cho đến khi khách hàng phàn nàn.

Xử lý lỗi không phải là phần thú vị của tự động hóa. Nhưng đó là phần phân biệt một hệ thống đáng tin cậy với một quả bom hẹn giờ.

Những điều bạn sẽ học được

Đến cuối bài học này, bạn sẽ xác định được các lỗi thường gặp trong tự động hóa, thiết kế các chiến lược thử lại mà không làm mọi thứ tồi tệ hơn, xử lý các trường hợp ngoại lệ trước khi chúng trở thành vấn đề và xây dựng hệ thống giám sát giúp phát hiện lỗi nhanh chóng.

Từ kịch bản lý tưởng đến thực tế

Trong các bài học 3-5, chúng ta đã thiết kế các quy trình tự động hóa theo "kịch bản lý tưởng" - kịch bản mà mọi thứ hoạt động như mong đợi. Bài học này nói về mọi thứ khác. Dữ liệu bị thiếu. API bị lỗi. Người dùng gửi biểu mẫu hai lần. Ngày tháng không được phân tích cú pháp. Các quy trình tự động hóa trong thực tế dành nhiều thời gian hơn để xử lý các ngoại lệ so với xử lý các trường hợp bình thường.

Danh sách các chế độ lỗi

Trước khi có thể xử lý lỗi, bạn cần biết điều gì có thể xảy ra sai sót. Dưới đây là các chế độ lỗi phổ biến nhất:

Lỗi bên ngoài (Những thứ bị hỏng ngoài tầm kiểm soát của bạn)

Lỗi Tác động Tần suất
Hết thời gian chờ API Bước này không thể hoàn thành Thường gặp
Đã vượt quá giới hạn số lần truy cập API Quá nhiều yêu cầu, bước bị chặn Thường gặp
Sự cố mất dịch vụ Toàn bộ hệ thống không khả dụng Thỉnh thoảng
Xác thực đã hết hạn Thông tin đăng nhập không còn hiệu lực Thỉnh thoảng
Nguồn dữ liệu đã thay đổi Các trường đã được di chuyển, đổi tên hoặc xóa Hiếm

Lỗi dữ liệu (Dữ liệu không như bạn mong đợi)

Lỗi Tác động Tần suất
Thiếu trường bắt buộc Không thể xử lý bản ghi Thường gặp
Định dạng dữ liệu sai Quá trình chuyển đổi thất bại Thường gặp
Nộp trùng lặp Cùng một cơ chế kích hoạt có thể gây ra hai lần sự cố Thỉnh thoảng
Giá trị rỗng hoặc null Tính toán thất bại, mẫu hiển thị sai Thường gặp
Những ký tự bất ngờ Các ký tự đặc biệt gây lỗi phân tích cú pháp Thỉnh thoảng

Lỗi logic (Hệ thống tự động hóa của bạn thực hiện sai thao tác)

Lỗi Tác động Tần suất
Điều kiện đánh giá sai Data routed incorrectly Thỉnh thoảng
Vòng lặp không kết thúc Runs forever, eats resources Hiếm nhưng hậu quả thảm khốc
Điều kiện tranh chấp Các bước song song xung đột Thỉnh thoảng
Dữ liệu lỗi thời Bước này sử dụng thông tin lỗi thời Thỉnh thoảng

Kiểm tra nhanh

Hãy nghĩ về một trong những ứng viên tự động hóa của bạn. Với mỗi bước, hãy tự hỏi: "Điều gì sẽ xảy ra nếu bước này thất bại?" Nếu câu trả lời của bạn là "Tôi không biết" hoặc "Tôi đoán là không có gì", thì đó là một lỗ hổng bảo mật.

Các chiến lược thử lại

Khi một bước thất bại do sự cố tạm thời (lỗi API, sự cố mạng), việc thử lại thường giải quyết được vấn đề. Nhưng thử lại không đúng cách có thể làm mọi thứ tồi tệ hơn.

Cách thử lại đơn giản (KHÔNG NÊN LÀM THẾ):

📍 Nơi dán: Mở ChatGPT (chat.openai.com), Claude (claude.ai) hoặc Gemini (gemini.google.com) và bắt đầu một cuộc trò chuyện mới.

📋 Cách sao chép prompt này: Nhấp vào bất kỳ đâu bên trong khối màu xám, nhấn Cmd+A rồi Cmd+C (Mac) hoặc Ctrl+A rồi Ctrl+C (Windows). Hoặc sử dụng biểu tượng sao chép xuất hiện.

Nếu bước thất bại: hãy thử lại ngay lập tức
Nếu thử lại thất bại: hãy thử lại ngay lập tức
Lặp lại mãi mãi

✏️ ​​Cách điền thông tin chi tiết của bạn: Thay thế mỗi [] và trình giữ chỗ trong ngoặc bằng thông tin cụ thể từ tình huống thực tế của bạn. Thông tin mơ hồ sẽ tạo ra kết quả mơ hồ — hãy cụ thể.

👀 Những gì bạn sẽ thấy: Trong vòng vài giây, AI sẽ trả về một phản hồi có cấu trúc dựa trên câu hỏi ở trên. Hãy đọc kỹ và coi đó là bản nháp, không phải câu trả lời cuối cùng.

📌 Nên làm gì với kết quả: Lưu phản hồi vào file Notes. Chọn gợi ý có hiệu quả cao nhất và thực hiện nó trong tuần này — đừng cố gắng làm tất cả cùng một lúc.

⚠️ Nếu kết quả không ổn: Nếu các gợi ý có vẻ chung chung, hãy dán nội dung sau: "Hãy cụ thể hơn với ngữ cảnh thực tế của tôi. Bỏ những lời khuyên chung chung." Nếu nó bỏ qua các chi tiết quan trọng bạn đã cung cấp, hãy hỏi: "Bạn đã bỏ sót [X] trong ngữ cảnh của tôi — hãy thực hiện lại với điều đó làm ràng buộc chính."

Việc này sẽ gây áp lực lên dịch vụ đang gặp lỗi, có thể tạo ra các bản sao và không bao giờ dừng lại.

Cơ chế thử lại thông minh:

Nếu bước đầu tiên thất bại: chờ 1 phút, thử lại (lần thử 2/3)
Nếu thử lại vẫn thất bại: chờ 5 phút, thử lại (lần thử 3/3)
Nếu vẫn thất bại: DỪNG LẠI, đánh dấu là thất bại, thông báo cho người dùng

Cơ chế lùi lũy thừa với độ lệch ngẫu nhiên: Tiêu chuẩn vàng cho việc thử lại. Mỗi lần thử lại sẽ chờ lâu hơn, và một yếu tố ngẫu nhiên ngăn nhiều quy trình tự động thử lại cùng lúc.

Lần thử 1: Ngay lập tức
Lần thử 2: Chờ 1-2 phút (ngẫu nhiên)
Lần thử 3: Chờ 4-8 phút (ngẫu nhiên)
Lần thử 4: Chờ 16-32 phút (ngẫu nhiên)
Nếu tất cả đều thất bại: Thông báo cho người dùng

Tính bất biến: Lưới an toàn

Trước khi thử lại, luôn kiểm tra: "Bước này đã thành công chưa?" Nếu Bước 3 đã gửi hóa đơn nhưng Bước 4 thất bại, việc thử lại từ Bước 3 KHÔNG nên gửi hóa đơn thứ hai.

Thiết kế mỗi bước sao cho có tính bất biến – chạy hai lần sẽ cho kết quả giống như chạy một lần. Các kỹ thuật:

  • Kiểm tra các bản ghi hiện có trước khi tạo bản ghi mới
  • Sử dụng ID duy nhất để tránh trùng lặp
  • Xác minh trạng thái trước khi thực hiện hành động

Xử lý các trường hợp ngoại lệ

Các trường hợp ngoại lệ là những tình huống bất thường nhưng hợp lệ gây ra lỗi trong quá trình tự động hóa. Thời điểm tốt nhất để tìm ra chúng là trong giai đoạn thiết kế – chứ không phải sau khi chúng đã gây ra sự cố.

Các trường hợp ngoại lệ thường gặp cần kiểm tra:

Dữ liệu trống/null:

  • Điều gì xảy ra nếu trường tên khách hàng trống?
  • Điều gì xảy ra nếu số tiền là 0,00 USD?
  • Điều gì xảy ra nếu địa chỉ email bị thiếu?

Giá trị giới hạn:

  • Điều gì xảy ra nếu ngày là ngày 1 tháng 1 (giới hạn năm)?
  • Điều gì xảy ra nếu số lượng đặt hàng là 1? Còn 10.000 thì sao?
  • Điều gì xảy ra nếu văn bản chứa 50.000 ký tự?

Các biến thể định dạng:

  • Điều gì xảy ra nếu số điện thoại là "(555) 123-4567" so với "5551234567" so với "+1-555-123-4567"?
  • Điều gì xảy ra nếu tên có các ký tự đặc biệt: "O'Brien," "Garcia-Lopez," "St. John"?
  • Điều gì xảy ra nếu ngày tháng ở định dạng DD/MM/YYYY thay vì MM/DD/YYYY?

Các trường hợp ngoại lệ về thời gian:

  • Điều gì xảy ra nếu trình kích hoạt hoạt động hai lần trong vòng 1 giây (gửi trùng lặp)?
  • Điều gì xảy ra trong quá trình chuyển đổi giờ mùa hè?
  • Còn sự khác biệt về múi giờ giữa các hệ thống thì sao?

Prompt AI để phát hiện các trường hợp ngoại lệ:

Tôi đang xây dựng một hệ thống tự động hóa [mô tả].

Dưới đây là các bước chính:
1. [Bước 1]
2. [Bước 2]
3. [Bước 3]

Đối với mỗi bước, hãy xác định:
- 3-5 trường hợp ngoại lệ có thể gây ra hành vi không mong muốn
- Điều gì sẽ xảy ra nếu mỗi trường hợp ngoại lệ xảy ra
- Cách xử lý từng trường hợp một cách khéo léo

Cũng xác định bất kỳ trường hợp ngoại lệ nào xảy ra giữa các bước, nơi mà
sự kết hợp của các điều kiện có thể gây ra sự cố.

Xây dựng chức năng xử lý lỗi trong thiết kế của bạn

Đối với mỗi bước trong quy trình tự động hóa, hãy xác định ba điều:

1. Thành công trông như thế nào:

Bước 3: Tạo bản ghi khách hàng trong hệ thống thanh toán
THÀNH CÔNG: Bản ghi được tạo, billing_id được trả về

2. Thất bại trông như thế nào:

CÁC CHẾ ĐỘ THẤT BẠI:
- Hết thời gian chờ API: Không có phản hồi trong vòng 30 giây
- Trùng lặp: Khách hàng có email này đã tồn tại
- Lỗi xác thực: Thiếu các trường bắt buộc
- Lỗi quyền: API key không có quyền ghi

3. Phải làm gì đối với mỗi lỗi:

XỬ LÝ:
- Hết thời gian chờ API: Thử lại với phương pháp lùi lũy thừa (3 lần thử)
- Trùng lặp: Ghi cảnh báo, sử dụng ID bản ghi hiện có, tiếp tục
- Lỗi xác thực: Ghi lỗi kèm chi tiết trường, bỏ qua bản ghi,
  thông báo cho quản trị viên
- Lỗi quyền: Thông báo cho quản trị viên ngay lập tức, tạm dừng tự động hóa

Đây là một template:

Đối với bước tự động hóa này:
[Mô tả bước]

Xác định xử lý lỗi:

1. Đầu vào dự kiến: [Dữ liệu nào bước này cần] 1. Nhận dữ liệu: [Làm thế nào để xác minh dữ liệu đầu vào là chính xác?]
2. Xác thực: [Làm thế nào để bạn xác minh dữ liệu đầu vào là chính xác?]
3. Kết quả thành công: [Bước này tạo ra kết quả gì khi hoạt động?]
4. Các chế độ lỗi: [Liệt kê tất cả những gì có thể xảy ra lỗi]
5. Hành động khắc phục: [Đối với mỗi lỗi, điều gì sẽ xảy ra?]
6. Quy tắc cảnh báo: [Khi nào cần thông báo cho người dùng?]
7. Ghi nhật ký: [Những gì cần được ghi lại để khắc phục sự cố?]

Giám sát và cảnh báo

Xử lý lỗi giúp phát hiện sự cố trong thời gian thực. Giám sát giúp phát hiện sự cố theo thời gian.

Những gì cần giám sát:

Số liệu Điều đó cho bạn biết Ngưỡng cảnh báo
Tỷ lệ thành công % số lần chạy hoàn tất mà không có lỗi Dưới 95%
Thời gian thực thi Quá trình tự động hóa mất bao lâu? Hơn gấp 2 lần bình thường
Số lỗi Số lỗi mỗi ngày Bất kỳ sự tăng nào so với mức cơ bản
Hồ sơ đã được xử lý Khối lượng hàng hóa được xử lý Sự sụt giảm hoặc tăng đột biến bất ngờ
Độ sâu hàng đợi Tồn đọng các mặt hàng chưa được xử lý Tăng trưởng ổn định

Chu kỳ giám sát:

  • Cảnh báo thời gian thực: Đối với các lỗi cần xử lý ngay lập tức (lỗi dữ liệu, gửi trùng lặp)
  • Báo cáo hàng ngày: Tóm tắt tất cả các lần chạy, lỗi và cảnh báo
  • Đánh giá hàng tuần: Xu hướng, tỷ lệ thành công, mô hình hiệu suất

Danh sách kiểm tra xử lý lỗi

Trước khi triển khai bất kỳ quy trình tự động hóa nào, hãy xác minh:

  • [ ] Mỗi bước đều có trạng thái thành công và thất bại được xác định
  • [ ] Logic thử lại bao gồm số lần thử tối đa và khoảng thời gian chờ
  • [ ] Các lần thử lại là bất biến (an toàn để lặp lại)
  • [ ] Dữ liệu rỗng/null được xử lý ở mọi bước
  • [ ] Các trình kích hoạt trùng lặp được phát hiện và quản lý
  • [ ] Các lỗi không thể khắc phục được sẽ cảnh báo người dùng kèm theo ngữ cảnh
  • [ ] Tất cả các lỗi đều được ghi nhật ký với đủ chi tiết để khắc phục sự cố
  • [ ] Có tùy chọn ghi đè thủ công để tạm dừng hoặc dừng quy trình tự động hóa

Bài tập: Thêm xử lý lỗi vào quy trình làm việc của bạn

Hãy xem xét quy trình làm việc nhiều bước mà bạn đã thiết kế trong bài tập của Bài học 5. Đối với mỗi bước:

  1. Liệt kê 2-3 điều có thể xảy ra sai sót
  2. Xác định cách quy trình tự động hóa nên phản hồi cho từng điều
  3. Thiết kế chiến lược thử lại (nếu có)
  4. Chỉ định khi nào cần cảnh báo người dùng
  5. Xác định một trường hợp ngoại lệ mà bước đó nên xử lý

Sử dụng prompt AI ở trên để giúp phát hiện các trường hợp ngoại lệ mà bạn có thể bỏ sót.

Những điểm chính cần ghi nhớ

  • Lỗi âm thầm còn tệ hơn lỗi ồn ào -- luôn báo cho ai đó khi có sự cố xảy ra
  • Các chiến lược thử lại cần số lần thử tối đa, tăng độ trễ và kiểm tra tính bất biến
  • Các trường hợp ngoại lệ gây ra hầu hết các lỗi tự động hóa -- kiểm tra dữ liệu trống, giá trị biên, biến thể định dạng và các vấn đề về thời gian
  • Đối với mỗi bước: xác định thành công, liệt kê các chế độ lỗi và chỉ định các hành động khắc phục
  • Theo dõi tỷ lệ thành công, thời gian thực thi và số lỗi để phát hiện sự suy giảm dần dần
  • Danh sách kiểm tra xử lý lỗi giúp ngăn ngừa các lỗi triển khai phổ biến nhất
  • Câu 1:

    Điều gì sẽ xảy ra khi quá trình tự động hóa gặp phải lỗi không thể khắc phục?

    GIẢI THÍCH:

    Khi một hệ thống tự động không thể phục hồi, nó cần phải báo lỗi rõ ràng: Thông báo cho người chịu trách nhiệm kèm theo chi tiết về bước nào bị lỗi, dữ liệu nào bị ảnh hưởng và hành động thủ công nào cần thiết để giải quyết. Những lỗi im lặng chính là kẻ thù.

  • Câu 2:

    'Các trường hợp ngoại lệ' trong tự động hóa là gì?

    GIẢI THÍCH:

    Các trường hợp ngoại lệ là những tình huống không phổ biến làm hỏng quá trình tự động hóa: trường tên có ký tự đặc biệt, số tiền chính xác là 0 đồng, ngày tháng ở ranh giới năm, biểu mẫu được gửi hai lần liên tiếp nhanh chóng. Chúng hiếm khi xảy ra riêng lẻ nhưng lại gây ra hầu hết các lỗi tự động hóa.

  • Câu 3:

    Mục đích của chiến lược thử lại là gì?

    GIẢI THÍCH:

    Chiến lược thử lại xử lý các lỗi tạm thời như hết thời gian chờ API hoặc sự cố mạng. Thử lại 2-3 lần với thời gian chờ tăng dần (ví dụ: chờ 1 phút, sau đó 5 phút, rồi 15 phút). Nếu tất cả các lần thử lại đều thất bại, hãy chuyển vấn đề cho người xử lý thay vì âm thầm bỏ cuộc.

  • Câu 4:

    Loại lỗi tự động hóa tồi tệ nhất là gì?

    GIẢI THÍCH:

    Lỗi âm thầm là tồi tệ nhất vì chúng tạo ra ảo tưởng rằng mọi thứ vẫn hoạt động bình thường. Hóa đơn không được gửi, dữ liệu bị hỏng, thông báo bị bỏ sót — và không ai biết cho đến khi khách hàng hoặc đồng nghiệp phàn nàn. Lỗi rõ ràng thì gây khó chịu nhưng ít nhất chúng cũng được phát hiện.

Thứ Tư, 27/05/2026 15:47
51 👨 28
Xác thực tài khoản!

Theo Nghị định 147/2024/ND-CP, bạn cần xác thực tài khoản trước khi sử dụng tính năng này. Chúng tôi sẽ gửi mã xác thực qua SMS hoặc Zalo tới số điện thoại mà bạn nhập dưới đây:

Số điện thoại chưa đúng định dạng!
Số điện thoại này đã được xác thực!
Bạn có thể dùng Sđt này đăng nhập tại đây!
Lỗi gửi SMS, liên hệ Admin
0 Bình luận
Sắp xếp theo
❖ AI Automation Workflows