1.java中有try。。。catch 捕獲異常並handle,golang中是什么機制?
主要有三個概念:defer 使用recover前提聲明 recover捕獲異常 panic異常
/**
捕獲異常
**/
func DeferFunc(o *beego.Controller) {
if e := recover(); e != nil {
logs.Error(" 錯誤 %s\r\n", e)
Return(o, nil, e)
}
}
/**
拋出異常
**/
func (it *EvtAccidentController) Add() {
DeferFunc(&it.Controller)
accident := new(model.EvtAccident)
data := it.Ctx.Input.RequestBody
if data != nil {
if err := json.Unmarshal(data, &accident); err != nil {
panic(err)
}
validations := accident.Validation(nil)
if validations != nil {
Return(&it.Controller, validations, errors.New("驗證沒通過"))
} else {
i, e := evtAccidentService.EvtAccidentInsert(accident)
Return(&it.Controller, i, e)
}
} else {
panic(errors.New("json數據不存在"))
}
}
