Есть ли Exception в Go

«Есть ли Exception в Go» — вопрос из категории Golang, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

func divide(a, b int) (int, error) {
    if b == 0 {
        return 0, fmt.Errorf("division by zero")
    }
    return a / b, nil
}

result, err := divide(10, 0)
if err != nil {
    log.Fatal(err)
}

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

func safeCall() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Recovered:", r)
        }
    }()
    panic("something went wrong")
}