Di bawah ini adalah pendapat saya untuk mengurangi penanganan kesalahan pada Go, contoh untuk saat mendapatkan parameter HTTP URL:
(Pola desain berasal dari https://blog.golang.org/errors-are-values )
type HTTPAdapter struct {
Error *common.AppError
}
func (adapter *HTTPAdapter) ReadUUID(r *http.Request, param string, possibleError int) uuid.UUID {
requestUUID := uuid.Parse(mux.Vars(r)[param])
if requestUUID == nil {
adapter.Error = common.NewAppError(fmt.Errorf("parameter %v is not valid", param),
possibleError, http.StatusBadRequest)
}
return requestUUID
}
memanggilnya untuk beberapa parameter yang mungkin adalah seperti di bawah ini:
adapter := &httphelper.HTTPAdapter{}
viewingID := adapter.ReadUUID(r, "viewingID", common.ErrorWhenReadingViewingID)
messageID := adapter.ReadUUID(r, "messageID", common.ErrorWhenReadingMessadeID)
if adapter.Error != nil {
return nil, adapter.Error
}
Ini bukan peluru perak, sisi negatifnya adalah jika Anda memiliki banyak kesalahan, Anda hanya bisa mendapatkan kesalahan terakhir.
Tetapi dalam hal ini relatif berulang dan berisiko rendah, oleh karena itu saya hanya bisa mendapatkan kemungkinan kesalahan terakhir.