Go Errors

¿Cómo manejar los errores en Go?

Go utilizar como concepto de error cualquier devolución a través de alguna implementación de la interfaz “error” provista por el lenguaje

1
2
3
type error interface {
      Error() string
}

Para usar esta interfaz y devolver un error puedes utilizar una implementación ya provista por Go sobre esta interfaz haciendo uso de la función errors.New() del paquete errors.

Una vez creado error lo retornas y luego evaluas si es no es nulo.

Por convención el error es el último valor retornado si devuelves más de un valor.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package main

import (
	"fmt"
	"errors"
)

func addTwo(value int) (int, error) {
	if (value < 0) {
		// business rules .. I can not work with negatives
		return value, errors.New(fmt.Sprintf("something went wrong value is %d:", value))
	} else {
		return value + 2, nil
	}
}

func main() {

	v, err := addTwo(-1);
	if err != nil {
		// do something with this error
		fmt.Print(err)
	} else {
		fmt.Print(v)
	}

}

El resultado de este código es

1
2
$ go run errors.go
something went wrong value is -1:

go  golang