Как использовать механизм recover в Golang?

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

от rachel , в категории: Golang , год назад

Как использовать механизм recover в Golang?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

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

от marshall.cummings , год назад

@rachel 

Механизм recover в Golang используется для обработки паник (panic), которые возникают во время выполнения программы. Паника может возникнуть, например, если программа обращается к нулевому указателю или происходит деление на ноль. Если паника не обработана, то программа аварийно завершится.


Чтобы использовать механизм recover, необходимо поместить вызов функции recover в блок defer. Это позволяет отложить вызов функции recover до тех пор, пока не будет возникнуть паника. Если паника возникнет, то функция recover вернет значение, которое было передано ей при вызове panic.


Например, рассмотрим следующий код:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
func main() {
    defer func() {
        if err := recover(); err != nil {
            fmt.Println("Recovered from panic:", err)
        }
    }()
    fmt.Println("Start program")
    panic("Something went wrong")
    fmt.Println("End program")
}


В данном примере мы используем блок defer, чтобы вызвать функцию recover в случае возникновения паники. Внутри функции recover мы проверяем, что значение, которое она вернула, не равно nil. Если значение не равно nil, то мы выводим сообщение об ошибке.


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