Gestire gli errori in Go

Mattepuffo's logo
Gestire gli errori in Go

Gestire gli errori in Go

Go non ha il classico try/catch/finally per gestire gli errori.

Ma semplicemente abbiamo l'interfaccia Error e il package errors attraverso i quali possiamo gestire gli errori ed intercettarli.

Nel senso che Go incentiva l'intercettazione "manuale" degli errori, piuttosto che quella "automatica" che abbiamo in altri linguaggi.

In questo articolo vediamo qualche esempio, partendo da questo:

package main

import (
	"errors"
	"fmt"
)

func main() {
	i, err := checkAge(10)

	if err != nil {
		fmt.Println(err, i)
	} else {
		fmt.Println(i)
	}
}

func checkAge(i int) (int, error) {
	if i < 18 {
		return 0, errors.New("Non sono ammessi minorenni")
	} else {
		return i, nil
	}
}

Approfittando del fatto che in Go possiamo ritornare più valori, nella nostra funzione controlliamo l'età ed in caso resitutiamo un errore.

Poi controlliamo se c'è un errore, ed in base a quello stampiamo qualcosa in console.

Se volessimo controllare solo l'errore, senza usare il numero ritornato:


package main

import (
	"errors"
	"fmt"
)

func main() {
	_, err := checkAge(10)

	if err != nil {
		fmt.Println(err)
	}
}

func checkAge(i int) (int, error) {
	if i < 18 {
		return 0, errors.New("Non sono ammessi minorenni")
	} else {
		return i, nil
	}
}

Oppure, se non ci interessa l'eventuale errore:

package main

import (
	"errors"
	"fmt"
)

func main() {
	i, _ := checkAge(10)

	fmt.Println(i)
}

func checkAge(i int) (int, error) {
	if i < 18 {
		return 0, errors.New("Non sono ammessi minorenni")
	} else {
		return i, nil
	}
}

Enjoy!


Condividi

Commentami!