工程上最常見的分類方式:使用者錯誤、外部資源錯誤、程式 bug。分類的目的不是學術,而是決定「要不要重試、要不要告警、要不要把細節暴露給使用者」。
工程規範 02:輸出分兩種訊息(User Message vs Diagnostic Message)
- User Message:給使用者看的短句(不要含堆疊、不要含機敏資訊)。
- Diagnostic:給工程師看的 log(要含例外類型、stack trace、關鍵 context)。
// 使用者看到:"系統忙碌,請稍後再試"
// 工程師 log:包含 requestId、userId、endpoint、ex
建議對應策略(最常用的表)
- 輸入錯誤:回 400 / 顯示提示;不需要告警。
- 外部依賴錯誤:可重試(含 backoff);必要時告警。
- 程式 bug:快速失敗(fail fast),記錄完整診斷資訊並修復。