Sobes.tech
Junior — Middle

Tətbiqinizdə istisnalar və səhvlər necə idarə olunur?

sobes.tech Süni İntellekt

AI-dan cavab

Go dilində səhv idarəetməsi çox digər dillərdən fərqlidir, çünki burada ənənəvi mənada istisnalar yoxdur. Əvəzinə, funksiyalar adətən ikinci nəticə kimi səhv (error) dəyərini qaytarır.

Əsas yanaşmalar:

  • Funktion çağırışından sonra səhvi yoxlamaq:

    result, err := someFunction()
    if err != nil {
        // səhv işləmə
        log.Println("Səhv:", err)
        return err
    }
    // result ilə davam et
    
  • Öz səhv tiplərini yaratmaq errors.New və ya fmt.Errorf istifadə etməklə daha məlumatlı mesajlar üçün.

  • Panik (panic) və bərpa (recover) nadir hallarda istifadə olunur, əsasən kritik səhvlər üçün, hansı ki, normal axında baş verməməlidir.

  • Səhvlərin qeydiyyatı və onları yuxarıya, yığma (stack) boyunca geri qaytarmaq üçün mərkəzləşdirilmiş işləmə.

Səhv idarəetmə nümunəsi:

package main

import (
    "errors"
    "fmt"
)

func divide(a, b float64) (float64, error) {
    if b == 0 {
        return 0, errors.New("sıfıra bölmə")
    }
    return a / b, nil
}

func main() {
    result, err := divide(10, 0)
    if err != nil {
        fmt.Println("Səhv:", err)
        return
    }
    fmt.Println("Nəticə:", result)
}

Beləliklə, Go-da səhvlər açıq şəkildə idarə olunur, bu da kodun oxunaqlığını və etibarlılığını artırır.