До какой стадии я должен возвращать ошибки в Go? - PullRequest
0 голосов
/ 14 апреля 2020

Я использую Go и Джин Гони c, чтобы проверить и изучить некоторые основы Go. Сначала я уже делал некоторые синтаксические и базовые упражнения.

У меня есть main.go (с использованием Gin Goni c), в котором я определяю пути, такие как r.GET(/todo, handler). У меня есть hander.go, в котором я описываю обработчики следующим образом:

func GetTodoListHandler(c *gin.Context) {
    c.JSON(http.StatusOK, todo.Get())
}

Наконец-то у меня есть todo/todo.go, где я определяю свою структуру и функции todo.

Теперь мой вопрос, до какой стадии я должен возвращать ошибки?

В моем todo/todo.go у меня есть функция Get(). Он использует другую вспомогательную функцию, которая может иметь возможную ошибку, например

location, err := helper(blabla)
if err != nil {
    // for a pointer we can return a nil
    return nil, err
}

Теперь я должен вернуть возможную ошибку из вспомогательной функции в функцию Get и из функции get обратно в функцию handler или нет? До какой стадии я должен возвращать эти ошибки, всегда ли это до обработчика?

1 Ответ

3 голосов
/ 14 апреля 2020

Я бы сделал это:

func GetTodoListHandler(c *gin.Context) {
    list, err := todo.Get()
    if err != nil {
        c.String(http.StatusInternalServerError, err.Error())
    }
    c.JSON(http.StatusOK, list)
}

и вернул бы todo.Get (список, ошибка).

Ваши обработчики http, такие как GetTodoListHandler, никогда не должны возвращать ошибки, но отправлять ответы / коды состояния клиенту.

...