Sobes.tech
Junior — Middle

როგორ ხორციელდება თქვენი პროგრამის გამონაკლისებისა და შეცდომების მართვა?

sobes.tech AI

პასუხი AI-სგან

Go ენის შეცდომების მართვა განსხვავდება მრავალი სხვა ენისგან, რადგან აქ ჩვეულებრივ მნიშვნელობაში გამონაკლისები არ არსებობს. ამის ნაცვლად, ფუნქციები ჩვეულებრივ აბრუნებენ შეცდომის მნიშვნელობას (error) როგორც მეორე შედეგს.

ძირითადი მიდგომები:

  • შეცდომის შემოწმება ფუნქციის გამოძახების შემდეგ:

    result, err := someFunction()
    if err != nil {
        // შეცდომის დამუშავება
        log.Println("შეცდომა:", err)
        return err
    }
    // გაგრძელება result-თან ერთად
    
  • საკუთარი შეცდომის ტიპების შექმნა errors.New ან fmt.Errorf გამოყენებით უფრო ინფორმაციული შეტყობინებებისათვის.

  • პანიკა (panic) და აღდგენა (recover) იშვიათად გამოიყენება, ძირითადად კრიტიკული შეცდომებისთვის, რომლებიც ნორმალურ პროცესში არ უნდა მოხდეს.

  • შეცდომების ლოგირება და მათ ზევით გადაცემა ცენტრალიზებული დამუშავებისთვის.

შეცდომის დამუშავების მაგალითი:

package main

import (
    "errors"
    "fmt"
)

func divide(a, b float64) (float64, error) {
    if b == 0 {
        return 0, errors.New("ნულზე გაყოფა")
    }
    return a / b, nil
}

func main() {
    result, err := divide(10, 0)
    if err != nil {
        fmt.Println("შეცდომა:", err)
        return
    }
    fmt.Println("შედეგი:", result)
}

ამგვარად, Go-ში შეცდომები მკაფიოდ მართვადია, რაც ზრდის კოდის წასაკითხაობას და სანდოობას.