本頁重點提要

  • 01.把錯誤分成使用者輸入、外部依賴、程式 bug。
  • 02.User message 要友善;診斷資訊要寫進 log。
  • 03.分類用來決定重試/告警/回應內容。

錯誤分類:可預期 vs 不可預期

工程上最常見的分類方式:使用者錯誤外部資源錯誤程式 bug。分類的目的不是學術,而是決定「要不要重試、要不要告警、要不要把細節暴露給使用者」。

工程規範 02:輸出分兩種訊息(User Message vs Diagnostic Message)

  • User Message:給使用者看的短句(不要含堆疊、不要含機敏資訊)。
  • Diagnostic:給工程師看的 log(要含例外類型、stack trace、關鍵 context)。
// 使用者看到:"系統忙碌,請稍後再試"
// 工程師 log:包含 requestId、userId、endpoint、ex

建議對應策略(最常用的表)

  • 輸入錯誤:回 400 / 顯示提示;不需要告警。
  • 外部依賴錯誤:可重試(含 backoff);必要時告警。
  • 程式 bug:快速失敗(fail fast),記錄完整診斷資訊並修復。

Implementation Reference
// User message vs Diagnostic log
Switch Page