Menu
Coddy logo textTech

Gestione di base degli errori

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

Gestione di base degli errori è uno schema fondamentale in Go, in cui controlli la presenza di errori dopo le operazioni che potrebbero fallire.

Impariamo a gestire gli errori in Go creando una semplice funzione di divisione che restituisce un errore quando si divide per zero:

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

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

Ora vediamo come usare questa funzione e gestire eventuali errori:

result, err := divide(10, 0)
    
if err != nil {
    fmt.Println("Error occurred:", err)
    return // Interrompi l'esecuzione o gestisci l'errore
}
    
fmt.Println("Result:", result)

Dopo aver eseguito questo codice, verifichiamo se si è verificato un errore usando la condizione if err != nil. Poiché abbiamo provato a dividere per zero, la funzione restituisce un errore e sullo schermo verrà visualizzato quanto segue:

Error occurred: division by zero

Questo schema, che consiste nel restituire un errore come ultimo valore restituito e verificarlo immediatamente, è molto comune in Go. Permette al tuo programma di gestire gli errori senza bloccarsi.

challenge icon

Sfida

Facile

In questa sfida, farai pratica con la gestione di base degli errori in Go. Hai una funzione che divide due numeri, ma la divisione per zero causa un errore di runtime. Il tuo compito è aggiungere la gestione degli errori per evitare questo arresto anomalo.

Il codice ha già una funzione che restituisce sia un risultato sia un errore. Devi controllare se c'è un errore prima di usare il risultato.

Provalo tu

package main

import (
	"errors"
	"fmt"
)

// Questa funzione divide x per y e restituisce un errore se y è zero
func divide(x, y float64) (float64, error) {
	if y == 0 {
		return 0, errors.New("cannot divide by zero")
	}
	return x / y, nil
}

func main() {
	// Valori di prova
	numerator := 10.0
	denominator := 0.0
	
	// Chiama la funzione divide
	result, err := divide(numerator, denominator)
	
	// TODO: Controlla se err non è nil (è presente un errore)
	// Se è presente un errore, stampalo usando fmt.Println(err)
	// Altrimenti, stampa il risultato usando fmt.Printf("Result: %.2f\n", result)
	
	// Rimuovi questa riga e implementa qui sopra una corretta gestione degli errori
	fmt.Printf("Result: %.2f\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