Sobes.tech
Back to questions
Middle+
3

Что такое паника в Go?

Companies where asked
МВидеоМВидео

Answer from AI

sobes.tech AI

Паника (panic) в Go — это механизм обработки критических ошибок, при которых выполнение программы немедленно прерывается. Паника вызывается функцией panic(), и она приводит к остановке текущей горутины и запуску процесса отмотки стека (stack unwinding), во время которого вызываются отложенные функции (defer).

Паника используется для сигнализации о непредвиденных ошибках, от которых программа не может или не должна восстанавливаться самостоятельно.

Пример использования panic:

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

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

    fmt.Println(divide(10, 2)) // 5
    fmt.Println(divide(10, 0)) // вызовет panic
    fmt.Println("Этот код не выполнится")
}

Здесь recover() позволяет перехватить панику и продолжить выполнение программы. Паника — это более жесткий способ обработки ошибок по сравнению с возвращаемыми значениями ошибок.