РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
13 of 1593 menu

Функция recover

Функция recover предназначена для восстановления после панической ситуации. Она вызывается внутри отложенной функции (defer) и возвращает значение, переданное в функцию panic. Если паники не было, recover возвращает nil. Основное назначение этой функции — предотвращение аварийного завершения программы и корректная обработка исключительных ситуаций.

Синтаксис

recover() interface{}

Функция не принимает параметров и возвращает результат типа interface{}, который может быть любого типа.

Пример

Давайте рассмотрим базовый пример использования recover для перехвата паники:

package main import "fmt" func main() { defer func() { if r := recover(); r != nil { fmt.Println("Recovered from panic:", r) } }() panic("something went wrong") fmt.Println("This line will not be executed") }

Результат выполнения кода:

"Recovered from panic: something went wrong"

Пример

Рассмотрим случай, когда паника не произошла — recover возвращает nil:

package main import "fmt" func main() { defer func() { if r := recover(); r != nil { fmt.Println("Recovered:", r) } else { fmt.Println("No panic occurred") } }() fmt.Println("Program is running normally") }

Результат выполнения кода:

"Program is running normally" "No panic occurred"

Пример

Покажем, как recover может использоваться для обработки паники в отдельной горутине:

package main import ( "fmt" "time" ) func safeWorker() { defer func() { if r := recover(); r != nil { fmt.Println("Worker recovered from:", r) } }() panic("worker panic") } func main() { go safeWorker() time.Sleep(100 * time.Millisecond) fmt.Println("Main program continues") }

Результат выполнения кода:

"Worker recovered from: worker panic" "Main program continues"

Смотрите также

  • функцию panic,
    которая инициирует паническую ситуацию
  • инструкцию defer,
    которая откладывает выполнение функции до завершения окружающей
  • инструкцию return,
    которая возвращает значение из функции
  • пустой идентификатор blank identifier,
    который используется для игнорирования значений
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить