Middle — Middle+
Recover kullanımı bağlamında arıza sonrası sistemin kurtarma mekanizmasını açıklayın.
sobes.tech yapay zeka
AI'dan gelen yanıt
Go dilinde, recover mekanizması, panic durumlarını yakalamak ve programın normal akışını yeniden sağlamak için kullanılır. Bu, sistemin hata sonrası ani kapanmasını engeller, hatayı işler ve çalışmaya devam eder.
Ana fikir:
- Bir panik oluştuğunda, fonksiyonların yürütülmesi durdurulur ve yığın çözülmeye başlar.
- Çağrılan fonksiyonlardan birinde,
deferile çağrılan verecover()içeren bir çağrı varsa, bu panik yakalanır ve hata değeri geri döndürülür. - Daha sonra, program hatayı işleyebilir ve çalışmaya devam edebilir.
Örnek:
func safeDivide(a, b int) int {
defer func() {
if r := recover(); r != nil {
fmt.Println("Panik sonrası kurtarma:", r)
}
}()
return a / b // b == 0 ise panic olur
}
func main() {
fmt.Println(safeDivide(10, 2)) // 5
fmt.Println(safeDivide(10, 0)) // Panik sonrası kurtarma: runtime error: integer divide by zero
}
Bu şekilde, recover sistemi beklenmedik hatalara karşı dayanıklı hale getirir ve ani kapanmayı önler.