다음은 Go에 대한 오류 처리를 줄이는 방법입니다. 샘플은 HTTP URL 매개 변수를 가져올 때입니다.
( 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
}
여러 가능한 매개 변수에 대해 호출하는 것은 다음과 같습니다.
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
}
이것은 은색 총알이 아닙니다. 단점은 여러 오류가있는 경우 마지막 오류 만 얻을 수 있다는 것입니다.
그러나이 경우 상대적으로 반복적이고 위험이 적으므로 가능한 마지막 오류를 얻을 수 있습니다.