Sobes.tech
Junior — Middle

Ilovangizda istisnolar va xatolar qanday boshqariladi?

sobes.tech AI

AIdan javob

Go tilida xatoliklarni boshqarish ko'plab boshqa tillardan farq qiladi, chunki bu yerda odatiy ma'noda istisnolar yo'q. O'rniga, funksiyalar odatda xato (error) qiymatini ikkinchi natija sifatida qaytaradi.

Asosiy yondashuvlar:

  • Funktsiyani chaqirgandan so'ng xatoni tekshirish:

    result, err := someFunction()
    if err != nil {
        // xato bilan ishlash
        log.Println("Xato:", err)
        return err
    }
    // result bilan davom etish
    
  • O'z xato turlarini yaratish errors.New yoki fmt.Errorf yordamida ko'proq ma'lumot beradigan xabarlar uchun.

  • Panik (panic) va tiklash (recover) kamdan-kam ishlatiladi, asosan muhim xatolar uchun, ular normal oqimda yuz bermasligi kerak.

  • Xatolarni log qilish va ularni yuqoriga, stek bo'ylab qaytarish uchun markazlashtirilgan ishlov berish.

Xato bilan ishlash misoli:

package main

import (
    "errors"
    "fmt"
)

func divide(a, b float64) (float64, error) {
    if b == 0 {
        return 0, errors.New("nolga bo'lish")
    }
    return a / b, nil
}

func main() {
    result, err := divide(10, 0)
    if err != nil {
        fmt.Println("Xato:", err)
        return
    }
    fmt.Println("Natija:", result)
}

Shu tarzda, Go da xatolar aniq boshqariladi, bu esa kodning o'qilishi va ishonchliligini oshiradi.