Panic ve Recover: Go'da Hata Yönetiminde Doğru Zamanlar

Go'da hata yönetimi genellikle `error` döndürmekle yapılır ama bazı durumlarda program çöküşü kaçınılmaz görünür. burada `panic` ve `recover` devreye girer.

Panic nedir?

Panic, programın normal akışını durdurarak bir panik durumu başlatır. Null pointer erişimi, dizinin sınırı aşması gibi çalışma zamanı hataları otomatik olarak panic tetikler. Siz de isteyerek `panic()` çağırabilirsiniz.

Recover ne işe yarar?

Recover, panic sırasında program çökmeden önce kontrolü geri almayı sağlar. Yalnızca `defer` içinde çalışır. Panic yakalandığında uygulamayı kurtarabilir veya temiz bir şekilde kapatabilirsiniz.

Reklam · TEST
AdSense Test ReklamıYazı arası (gönderi içi) · Yazı arası

Doğru zaman nedir?

Panic sadece gerçekten kurtarılamayan durumlarda kullanılır: başlangıç yapılandırması başarısız, veritabanı bağlantısı imkansız. Günlük hataları (dosya bulunamadı, ağ zaman aşımı) `error` döndürerek yönetin.

Pratik örnek:

1package main
2
3import (
4"fmt"
5)
6
7func riskyOperation() {
8panic("Kritik hata oluştu!")
9}
10
11func main() {
12defer func() {
13if r:= recover(); r!= nil {
14fmt.Println("Hata yakalandı:", r)
15fmt.Println("Program devam ediyor...")
16}
17}()
18
19fmt.Println("Operasyon başlıyor...")
20riskyOperation()
21fmt.Println("Bu satır çalışmayacak")
22}

Çıktı:

1Operasyon başlıyor...
2Hata yakalandı: Kritik hata oluştu!
3Program devam ediyor...

Dikkat: Recover olmadan panic program tamamen durur. Recover ile panik durmuş olsa da, `riskyOperation()` sonrası kodlar çalışmaz; sadece defer bloğu çalışır. Gerçek uygulamalarda panic kullanmadan önce iki kez düşün. Çoğu durumda `error` dönüp çağıran fonksiyona karar verme sorumluluğunu bırakmak daha temiz ve esnek bir tasarımdır.

Reklam · TEST
AdSense Test ReklamıGönderi altı · Görüntülü
konu hakkında tepkinizi verebilirsiniz