Назад к вопросам
Wildberries
МТС
Avito
VK
Junior — Middle
80
Каким образом осуществляется управление исключениями и ошибки в вашем приложении?
Компании, где спрашивали
Evrone
Самокат Тех
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 ошибки обрабатываются явно, что повышает читаемость и надежность кода.