Sobes.tech
Back to questions
Junior — Middle
84

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

Companies where asked
КуперКупер

Answer from AI

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 программа не падает, а продолжает работу.