Come vengono gestite le eccezioni e gli errori nella tua applicazione?
sobes.tech AI
Risposta dell'AI
In Go, la gestione degli errori differisce da molti altri linguaggi, poiché qui non ci sono eccezioni nel senso tradizionale. Invece, le funzioni restituiscono di solito un valore di errore (error) come secondo risultato.
Approcci principali:
-
Controllo dell'errore dopo aver chiamato una funzione:
result, err := someFunction() if err != nil { // gestione dell'errore log.Println("Errore:", err) return err } // continuare con result -
Creazione di tipi di errore personalizzati usando
errors.Newofmt.Errorfper messaggi più informativi. -
Panic (
panic) e recupero (recover) sono usati raramente, principalmente per error critici che non dovrebbero verificarsi nel flusso normale. -
Registrazione degli errori e restituzione verso l'alto nello stack per una gestione centralizzata.
Esempio di gestione degli errori:
package main
import (
"errors"
"fmt"
)
func divide(a, b float64) (float64, error) {
if b == 0 {
return 0, errors.New("divisione per zero")
}
return a / b, nil
}
func main() {
result, err := divide(10, 0)
if err != nil {
fmt.Println("Errore:", err)
return
}
fmt.Println("Risultato:", result)
}
In questo modo, in Go, gli errori vengono gestiti esplicitamente, il che aumenta la leggibilità e l'affidabilità del codice.