Sobes.tech
Назад к вопросам
Junior — Middle
80

Каким образом осуществляется управление исключениями и ошибки в вашем приложении?

Компании, где спрашивали
WildberriesWildberries
МТСМТС
Evrone
AvitoAvito
Самокат Тех
VKVK
Merlion

Ответ от нейросети

sobes.tech AI

В Go управление ошибками отличается от многих других языков, так как здесь нет исключений в привычном смысле. Вместо этого функции обычно возвращают значение ошибки (error) как второй результат.

Основные подходы:

  • Проверка ошибки после вызова функции:

    result, err := someFunction()
    if err != nil {
        // обработка ошибки
        log.Println("Ошибка:", err)
        return err
    }
    // продолжение работы с result
    
  • Создание собственных типов ошибок с помощью errors.New или fmt.Errorf для более информативных сообщений.

  • Паники (panic) и восстановление (recover) используются редко, в основном для критических ошибок, которые не должны происходить в нормальном потоке.

  • Логирование ошибок и возврат их вверх по стеку для централизованной обработки.

Пример обработки ошибки:

package main

import (
    "errors"
    "fmt"
)

func divide(a, b float64) (float64, error) {
    if b == 0 {
        return 0, errors.New("деление на ноль")
    }
    return a / b, nil
}

func main() {
    result, err := divide(10, 0)
    if err != nil {
        fmt.Println("Ошибка:", err)
        return
    }
    fmt.Println("Результат:", result)
}

Таким образом, в Go ошибки обрабатываются явно, что повышает читаемость и надежность кода.