Sobes.tech
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, defer ile çağrılan ve recover() 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.