Sobes.tech
Junior — Middle

Cum se gestionează excepțiile și erorile în aplicația dvs.?

sobes.tech AI

Răspuns de la AI

În Go, gestionarea erorilor diferă de multe alte limbaje, deoarece aici nu există excepții în sensul obișnuit. În schimb, funcțiile returnează de obicei o valoare de eroare (error) ca al doilea rezultat.

Abordări principale:

  • Verificarea erorii după apelarea unei funcții:

    result, err := someFunction()
    if err != nil {
        // tratarea erorii
        log.Println("Eroare:", err)
        return err
    }
    // continuarea cu result
    
  • Crearea propriilor tipuri de erori folosind errors.New sau fmt.Errorf pentru mesaje mai informative.

  • Panic (panic) și recuperare (recover) sunt folosite rar, în principal pentru erori critice care nu trebuie să apară în fluxul normal.

  • Logarea erorilor și returnarea lor în sus pe stivă pentru o gestionare centralizată.

Exemplu de gestionare a erorii:

package main

import (
    "errors"
    "fmt"
)

func divide(a, b float64) (float64, error) {
    if b == 0 {
        return 0, errors.New("împărțire la zero")
    }
    return a / b, nil
}

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

Astfel, în Go, erorile sunt gestionate explicit, ceea ce crește lizibilitatea și fiabilitatea codului.