Sobes.tech
Junior — Middle

Go dilində istisnaların (Exception) nə olduğunu bilirsinizmi?

sobes.tech Süni İntellekt

AI-dan cavab

Go dilində ənənəvi istisnalar (Exception) yoxdur, Java və ya Python kimi. Əvəzinə, Go səhvləri idarə etmək üçün geri qaytarılan dəyərlərdən istifadə edir: funksiya səhv dəyərini (error) geri qaytarır və onu yoxlamaq lazımdır.

Ancaq, Go-da panik (panic) və recover (qurtarma) mexanizmi mövcuddur, bu da istisnalara bənzər kimi qəbul edilə bilər, lakin o, kritik səhvlər üçün nəzərdə tutulmuşdur və adi səhv idarəetməsi üçün istifadə edilməməlidir.

Go-da səhv idarəetmə nümunəsi:

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

nəticə, err := divide(10, 0)
if err != nil {
    fmt.Println("Xəta:", err)
} else {
    fmt.Println("Nəticə:", nəticə)
}

Panik/recover istifadə:

func mayPanic() {
    panic("nəsə səhv getdi")
}

func main() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Panikdən sonra bərpa edildi:", r)
        }
    }()
    mayPanic()
    fmt.Println("Bu kod icra olunmayacaq")
}