Hata Yönetimi (101): err != nil Mantığını Anlamak

  • Konbuyu başlatan Konbuyu başlatan irfo
  • Başlangıç tarihi Başlangıç tarihi

irfo

Moderatör
Katılım
7 Ocak 2026
Mesajlar
290
Tepkime puanı
2
Puanları
18

Try-Catch Yok mu?​

Java, C# veya Python geliştiricileri Go'ya geldiklerinde şok olurlar: Go'da try-catch (Exception Handling) mekanizması yoktur.Go tasarımcıları, hataların "beklenmedik istisnalar" değil, akışın doğal bir parçası olduğuna inanır. Hata, sadece bir değerdir.

if err != nil​

Go'da bir fonksiyon işini yapamazsa programı patlatmaz (throw exception yapmaz); sadece yanında bir error değeri döndürür. Siz de bu değeri kontrol edersiniz.

Kod:
dosya, err := os.Open("test.txt")

if err != nil {
    // Hata var demektir! (err değeri 'nil' yani boş değil)
    fmt.Println("Dosya açılamadı:", err)
    return // İşlemi durdur
}

// Buraya geldiysen hata yok demektir.
fmt.Println("Dosya açıldı:", dosya.Name())

Bu kalıbı Go kodlarında binlerce kez görürsünüz.

Kendi Hatanı Oluşturmak​

errors paketi ile basit hatalar oluşturabilirsiniz.

Kod:
import "errors"

func karekok(n float64) (float64, error) {
    if n < 0 {
        return 0, errors.New("negatif sayının karekökü alınamaz")
    }
    return math.Sqrt(n), nil // Hata yoksa 'nil' dön
}

Neden Bu Yöntem?​

try-catch blokları kodu spagettiye çevirebilir ve hatanın nerede olduğunu gizleyebilir. Go'da ise hata yönetimi açıktır (explicit). Programcıyı hatayı o an, olduğu yerde çözmeye zorlar. Bu da Go yazılımlarını (Docker, Kubernetes gibi) çok daha kararlı (stable) yapar.

Sonuç​

err != nil kontrolü yazmaktan sıkılmayın. Bu, Go'nun güvenli ve sağlam kod yazma felsefesinin temel taşıdır.
 
Geri
Üst