Sobes.tech
Junior — Middle

Оё шумо медонед, ки чӣ гуна истисноҳо (Exception) дар забони Go ҳастанд?

sobes.tech AI

Ҷавоб аз AI

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

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

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

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

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

Использование panic/recover:

func mayPanic() {
    panic("что-то пошло не так")
}

func main() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Восстановились после паники:", r)
        }
    }()
    mayPanic()
    fmt.Println("Этот код не выполнится")
}