Menu
Coddy logo textTech

Hata Kavramı

Coddy'nin GO Journey'sinin Temeller bölümünün bir parçası. Ders 102 / 109.

Go'da, hatalar bir şeylerin ters gittiğini belirten değerlerdir. Go, hataları istisnalar kullanmak yerine açıkça ele alır.

Sayıları bölerken hata oluşturabilecek bir fonksiyon oluşturalım:

func divide(a, b float64) (float64, error) {
    if b == 0 {
        return 0, errors.New("cannot divide by zero")
    }
    return a / b, nil
}

Bu fonksiyon iki değer döndürür: bölme işleminin sonucu ve potansiyel bir hata. Eğer bölen sıfır ise, bölme işlemini denemek yerine bir hata mesajı döndürürüz.

Şimdi, fonksiyonumuzu kullanalım ve olası hataları ele alalım:

result, err := divide(10, 0)
if err != nil {
    fmt.Println("Error:", err)
} else {
    fmt.Println("Result:", result)
}

Bu kodu çalıştırdıktan sonra, sıfıra bölmeye çalıştığımız için ekranda bir hata mesajı göreceğiz:

Error: cannot divide by zero

Bu, Go'nun hata işleme desenini gösterir: bir hata oluşup oluşmadığını kontrol edin (err != nil) ve ardından uygun işlemi yapın. Eğer hata oluşmadıysa, sonucu güvenle kullanabiliriz.

challenge icon

Görev

Kolay

Bu görevde, Go'da hatalarla çalışmayı pratik edeceksin. İki sayıyı bölen ve sıfıra bölme denenirse bir hata döndüren bir fonksiyon oluşturacaksın.

Görevin:

  1. İki tamsayı alan ve bölümü ile bir hata döndüren divide fonksiyonunu tamamlamak.
  2. Bölen sıfırsa, 0 ve "division by zero" mesajını içeren bir hata döndürmek.
  3. Bölme geçerliyse, sonucu ve hata için nil döndürmek.
  4. main fonksiyonunda, sağlanan değerlerle divide fonksiyonunu çağırmak ve oluşan hataları uygun şekilde ele almak.

Bu alıştırma, Go fonksiyonlarının genellikle bir sonuç ve bir hata döndürme biçimini ve bu hataların nasıl kontrol edilip ele alınacağını gösterir.

Kendin dene

package main
import (
    "errors"
    "fmt"
)
// divide, a'yı b'ye böler ve sonucu döndürür
// Eğer b 0 ise, bir hata döndürür
func divide(a, b int) (int, error) {
    // TODO: divide fonksiyonunu uygula
    // Eğer b 0 ise, 0 ve "division by zero" mesajını içeren bir hata döndürür
    // Aksi takdirde, a/b sonucunu ve hata için nil döndürür

}
func main() {
    // İlk test durumu
    a, b := 10, 2
    result, err := divide(a, b)
    if err != nil {
        fmt.Printf("Error: %s\n", err)
    } else {
        fmt.Printf("Result: %d\n", result)
    }

    // İkinci test durumu
    a, b = 8, 0
    result, err = divide(a, b)
    if err != nil {
        fmt.Printf("Error: %s\n", err)
    } else {
        fmt.Printf("Result: %d\n", result)
    }
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Temeller bölümündeki tüm dersler

Kendi başına pratik yap: Online Go derleyicisi