Sobes.tech
Junior — Middle

Каква е необходимостта от използване на функцията recover вътре в defer в Go?

sobes.tech AI

Отговор от AI

В езика Go, функцията recover се използва за улавяне на panic и предотвратяване на аварийното спиране на програмата. Въпреки това, recover работи само ако се извика вътре в отложена функция (defer).

Използването на recover вътре в defer позволява:

  • Безопасно обработване на паника, например, записване на грешка или почистване на ресурси.
  • Продължаване на изпълнението на програмата след паника, ако е възможно.

Пример:

func safeFunction() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Възстановен от паника:", r)
        }
    }()
    // Код, който може да предизвика panic
    panic("нещо се обърка")
}

Ако извикате recover извън defer, тя няма да улови паниката и програмата ще приключи внезапно. Затова recover винаги се поставя вътре в defer за правилна обработка на изключителни ситуации.