Sobes.tech
Junior — Middle

Դու գիտե՞ք, թե ինչ են արտակարգ իրավիճակները (Exception) Go լեզվում։

sobes.tech AI

Պատասխան AI-ից

Go լեզվում ավանդական արտակարգ իրավիճակներ (Exception) չկան, ինչպես Java կամ Python-ում: Փոխարենը, Go-ն օգտագործում է վերադարձվող արժեքներ սխալների կառավարում համար՝ ֆունկցիան վերադարձնում է սխալի արժեք (error), որը պետք է ստուգել:

Այնուամենայնիվ, Go-ում կա Panic և Recover մեխանիզմ, որը կարելի է դիտարկել որպես արտակարգ իրավիճակների անալոգ, բայց այն նախատեսված է критիկական սխալների համար և չի պետք օգտագործել սովորական սխալների կառավարում համար:

Սխալի կառավարում օրինակ Go-ում:

func divide(a, b int) (int, error) {
    if b == 0 {
        return 0, fmt.Errorf("բաժանում զրոյով")
    }
    return a / b, nil
}

արդյունք, err := divide(10, 0)
if err != nil {
    fmt.Println("Սխալ:", err)
} else {
    fmt.Println("Արդյունք:", արդյունք)
}

Panic/Recover օգտագործում:

func mayPanic() {
    panic("ինչ-որ բան սխալ է գնացել")
}

func main() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Վերականգնվեց Panic-ից հետո:", r)
        }
    }()
    mayPanic()
    fmt.Println("Այս կոդը չի կատարվի")
}