跳轉到

Error Code Range Collision

概念概覽

碰號事件

核心知識

碰號事件

Dungeon 錯誤碼從 1-20 重新編號至 3000-3099 後,發現與 common errors proto 的 3001-3504 區段碰號。這是 P0 問題,因為相同數字 string 在不同模組會造成語意混淆。

根本原因

快速選擇編號範圍時沒有先查 range table,事後才發現衝突。doc 33 §1.1 的 range table 是 SoT,但在修改時未被參照。

修復方向

建議區段:7000-7099(Dungeon)
步驟:
1. 修改 proto enum 值
2. 更新 twirp.go 中的 error mapping
3. 更新相關文檔
4. 從 Windows toolchain 執行 make proto 重新生成 dungeon_errors.pb.go
5. Unity 端同步 regenerate DungeonErrors.cs

預防機制

分配任何新模組錯誤碼區段前,必須先 grep 現有 proto 確認範圍無衝突,再查 doc 33 §1.1 range table。

經驗教訓

  • 選擇錯誤碼範圍是高風險操作,必須先查 SoT range table 再動手

  • 快速修復(hotfix mindset)容易跳過範圍確認步驟,埋下 P0 問題

  • 碰號不會在編譯時報錯,只在運行時造成語意混淆,難以發現

常見陷阱

  • 3000-3099 看起來是空白區段但實際上 3001-3504 已被 common errors 佔用

  • 重新編號後需要同步更新 proto、twirp.go、文檔、pb.go、Unity CS 五個地方,漏掉任何一個都會造成不一致

最佳實踐

  • 建立錯誤碼分配 checklist:先 grep → 查 range table → 分配 → 更新所有下游產物

  • doc 33 §1.1 range table 是 SoT,所有新模組分配前必查

相關概念

來源 Sessions

日期 Session 貢獻摘要

| 2026-04-07 | 13536126-c4f1-4c71-ae73-a6544e9167bf | 發現 Dungeon 3000-3099 與通用錯誤碼 3001-3504 碰號的 P0 問題,建立錯誤碼區段管理規範 |


本概念頁面由 Semi-Brain Wiki 系統自動維護

最後更新: 2026-04-07