Junior — Middle
Обяснете механизма на взаимодействие между функциите panic, defer и recover в езика за програмиране Go.
sobes.tech AI
Отговор от AI
В Go функциите panic, defer и recover са свързани с обработката на грешки и изключителни ситуации.
panic— причинява внезапно завършване на текущата функция и започва процеса на "паника", който се разпространява по стековия трак и извиква отложените функцииdefer.defer— отлага изпълнението на функция до изхода от текущата функция, позволявайки почистване или обработка следpanic.recover— позволява "улов" наpanicвътре в отложена функция и предотвратява прекратяването на програмата.
Пример:
func пример() {
defer func() {
if r := recover(); r != nil {
fmt.Println("Възстановен от panic:", r)
}
}()
fmt.Println("Преди panic")
panic("нещо се обърка")
fmt.Println("Това няма да се изпълни")
}
Тук panic предизвиква грешка, defer с recover я улавя и програмата продължава да работи без срив.