一 說(shuō)明
1.1 當(dāng)前軟件環(huán)境,Windows10,VSCode
二 步驟
2.1 目的,建立統(tǒng)一的錯(cuò)誤碼-錯(cuò)誤描述入口,方便前端或用戶反饋時(shí)候查找問(wèn)題
2.2 實(shí)現(xiàn),大體想法就是,建立一套錯(cuò)誤碼,然后每個(gè)錯(cuò)誤碼,對(duì)應(yīng)一個(gè)錯(cuò)誤描述,使用map映射他們的對(duì)應(yīng)關(guān)系。
err_id.go文件
/*
功能:錯(cuò)誤碼
時(shí)間:2022-5-1
*/
package ERROR
type ID int
const (
SUCCESS ID = 0 //成功
AUTH_FAILURE ID = 100 //認(rèn)證失敗
//注冊(cè),從1000開(kāi)始
REGISTER_ACCOUNT_ERROR ID = 1000 //賬號(hào)錯(cuò)誤
REGISTER_PWD_ERROR ID = 1001 //密碼錯(cuò)誤
//登錄,從2000開(kāi)始
LOGIN_ACCOUNT_ERROR ID = 2000 //賬號(hào)錯(cuò)誤
LOGIN_PWD_ERROR ID = 2001 //密碼錯(cuò)誤
//
)
//-----------------------------------------------
// the end
//-----------------------------------------------
err_msg.go文件
/*
功能:錯(cuò)誤描述
時(shí)間:2022-5-1
*/
package ERROR
type Message string
//錯(cuò)誤項(xiàng)
type error_item struct {
id ID
msg Message
}
//-----------------------------------------------
//類
type ErrorManager struct {
err_map map[ID]Message
}
var instance_error_manager *ErrorManager
//-----------------------------------------------
//函數(shù)定義
func GetInstance() *ErrorManager {
if instance_error_manager == nil {
instance_error_manager = &ErrorManager{}
instance_error_manager.bind()
}
return instance_error_manager
}
//查找錯(cuò)誤消息
func (e *ErrorManager) Find(err_id ID) Message {
err_msg, ok := e.err_map[err_id]
if !ok {
panic("錯(cuò)誤碼需要配置")
}
return err_msg
}
//綁定關(guān)系
func (e *ErrorManager) bind() {
//配置
error_configs := []error_item{
{SUCCESS, "成功"},
{AUTH_FAILURE, "認(rèn)證失敗"},
//注冊(cè)
{REGISTER_ACCOUNT_ERROR, "注冊(cè)失敗,賬號(hào)不合法或重復(fù)"},
{REGISTER_PWD_ERROR, "注冊(cè)失敗,密碼不合法"},
//登錄
{LOGIN_ACCOUNT_ERROR, "登錄失敗,賬號(hào)錯(cuò)誤"},
{LOGIN_PWD_ERROR, "登錄失敗,密碼錯(cuò)誤"},
}
e.err_map = make(map[ID]Message)
for i := 0; i < len(error_configs); i++ {
config := error_configs[i]
key := config.id
e.err_map[key] = config.msg
}
}
//-----------------------------------------------
//測(cè)試
func test_error() {
e := GetInstance()
t := e.Find(SUCCESS)
print(t)
}
//引入測(cè)試
func Import_test_error() {
//test_error()
}
//-----------------------------------------------
// the end
//-----------------------------------------------
包外部使用,只需要關(guān)注 錯(cuò)誤碼,錯(cuò)誤描述通過(guò)查詢獲?。?err_id := ERROR.LOGIN_ACCOUNT_ERROR
err_msg := ERROR.GetInstance().Find(err_id)
學(xué)海無(wú)涯,錯(cuò)誤難免,如有發(fā)現(xiàn),盡請(qǐng)指正。
--the end