Как работает механизм паники в Golang?

Пользователь

от jedidiah.brown , в категории: Golang , год назад

Как работает механизм паники в Golang?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от linnea , год назад

@jedidiah.brown 

Механизм паники в Golang - это механизм обработки ошибок, который используется для прерывания выполнения программы при возникновении критических ошибок.


Когда возникает паника, выполнение программы прерывается, и управление передается функции, которая находится на вершине стека вызовов и имеет соответствующую инструкцию recover. Эта функция может вернуть значение, которое было передано в функцию panic, чтобы позволить программе продолжить выполнение.


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


Вот пример использования паники в Golang:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
func doSomething(arg int) {
    if arg == 0 {
        panic("arg is zero")
    }
    // some code here
}

func main() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Recovered:", r)
        }
    }()

    doSomething(0)
    fmt.Println("This will not be printed")
}


В этом примере, функция doSomething вызывает панику, если ей передан аргумент со значением 0. В функции main используется defer для вызова функции, которая будет вызвана после завершения main. Эта функция проверяет, была ли вызвана паника, и, если да, выводит сообщение об этом. Поскольку doSomething вызывает панику, то последующая инструкция fmt.Println не будет выполнена.