I have struct that have a method that serve the response.
type ctrl struct {
*base.AjaxCtrl
file ini.File
}
func (rcv *ctrl) getVar() string {
return mux.Vars(rcv.Req)["location"]
}
func (rcv *ctrl) getFile() string {
return location.JoinPaths(folder, rcv.getVar()+ext)
}
func (rcv *ctrl) upload() {
file, err := ini.LoadFile(rcv.getFile())
if err != nil {
rcv.AddErr("TextError", err.Error())
return
}
rcv.file = file
}
// Convert text to json structure
func (rcv *ctrl) convertToJson() string {
js, err := json.Marshal(rcv.file.Section("text/signup"))
if err != nil {
rcv.AddErr("ConvertError", err.Error())
return ""
}
return string(js)
}
func (rcv *ctrl) serveHttp() (types.SuccsJSON, types.ErrorsJSON) {
rcv.upload()
if rcv.AnyErrors() {
return nil, rcv.Errs
}
str := rcv.convertToJson()
if rcv.AnyErrors() {
return nil, rcv.Errs
}
return c.Sucss, nil
}
The method serveHttp() handle the response to client. As you can see, I am handling the error with the method AnyError() everytime. I find this way is pretty boring and maybe wrong design. Would it be better to throw a panic instead of error handling?
func (rcv *ctrl) upload() {
file, err := ini.LoadFile(rcv.getFile())
if err != nil {
rcv.AddErr("TextError", err.Error())
panic()
}
rcv.file = file
}