Sobes.tech
Назад к вопросам
Junior — Middle
83

Можете объяснить концепцию восстановления после сбоев в языке Go?

Компании, где спрашивали
КуперКупер

Ответ от нейросети

sobes.tech AI

В Go концепция восстановления после сбоев реализуется с помощью механизма panic и recover.

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

Это полезно для обработки неожиданных ошибок и предотвращения аварийного завершения программы.

Пример:

package main

import "fmt"

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

    panic("что-то пошло не так")
    fmt.Println("Этот код не выполнится")
}

func main() {
    riskyFunction()
    fmt.Println("Программа продолжает работу")
}

В этом примере panic вызывает ошибку, но благодаря recover программа не падает, а продолжает работу.