Menu
Coddy logo textTech

Il concetto di errore

Fa parte della sezione Fondamenti del percorso GO di Coddy. Lezione 102 di 109.

In Go, gli errori sono valori che indicano che qualcosa è andato storto. Go gestisce gli errori in modo esplicito anziché usare le eccezioni.

Creiamo una funzione che potrebbe generare un errore quando divide dei numeri:

func divide(a, b float64) (float64, error) {
    if b == 0 {
        return 0, errors.New("cannot divide by zero")
    }
    return a / b, nil
}

Questa funzione restituisce due valori: il risultato della divisione e un eventuale errore. Se il divisore è zero, restituiamo un messaggio di errore invece di tentare la divisione.

Ora usiamo la nostra funzione e gestiamo eventuali errori:

result, err := divide(10, 0)
if err != nil {
    fmt.Println("Error:", err)
} else {
    fmt.Println("Result:", result)
}

Dopo aver eseguito questo codice, vedremo un messaggio di errore sullo schermo perché abbiamo provato a dividere per zero:

Error: cannot divide by zero

Questo dimostra il modello di gestione degli errori di Go: controlla se si è verificato un errore (err != nil) e poi intraprendi l'azione appropriata. Se non si è verificato alcun errore, possiamo usare il risultato in tutta sicurezza.

challenge icon

Sfida

Facile

In questa sfida, ti eserciterai a gestire gli errori in Go. Creerai una funzione che divide due numeri e restituisce un errore se si tenta di dividere per zero.

Il tuo compito è:

  1. Completare la funzione divide, che accetta due interi e restituisce il loro quoziente e un errore.
  2. Se il divisore è zero, restituisci 0 e un errore con il messaggio "division by zero".
  3. Se la divisione è valida, restituisci il risultato e nil come errore.
  4. Nella funzione main, chiama divide con i valori forniti e gestisci eventuali errori in modo appropriato.

Questo esercizio mostra come le funzioni Go restituiscano comunemente un risultato e un errore, e come controllare e gestire questi errori.

Provalo tu

package main
import (
    "errors"
    "fmt"
)
// divide divide a per b e restituisce il risultato
// Se b è 0, restituisce un errore
func divide(a, b int) (int, error) {
    // TODO: Implementa la funzione divide
    // Se b è 0, restituisci 0 e un errore con il messaggio "division by zero"
    // Altrimenti, restituisci a/b e nil come errore

}
func main() {
    // Primo caso di test
    a, b := 10, 2
    result, err := divide(a, b)
    if err != nil {
        fmt.Printf("Error: %s\n", err)
    } else {
        fmt.Printf("Result: %d\n", result)
    }

    // Secondo caso di test
    a, b = 8, 0
    result, err = divide(a, b)
    if err != nil {
        fmt.Printf("Error: %s\n", err)
    } else {
        fmt.Printf("Result: %d\n", result)
    }
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Fondamenti

Esercitati da solo: Compilatore Go online