Errores
15 pasos en 6 series de Go.
Go devuelve los errores como valores y el compilador no te deja olvidar ninguno. La interfaz error, envolver con %w, errors.Is y errors.As, tus propios tipos de error, y defer, panic y recover.
La última serie cubre errores entre goroutines, que es donde la cosa se pone realmente incómoda. Quince pasos, y vas a teclear if err != nil más veces que en cualquier otro tour de este sitio.
El error como valor
- error es una interfazUn método, Error() string — cualquier cosa que lo tenga es un error.
- ErroresErrores centinela, tipos propios y cómo envolverlos.
- El retorno tempranoAtiende el error y retorna; el camino feliz queda a una sola sangría.
Envolver errores
- Envolver con %wfmt.Errorf con %w agrega contexto y deja alcanzable el original.
- errors.IsComparar contra un centinela a través de cualquier cantidad de envolturas.
- errors.AsRecuperar el tipo concreto del error, para leer sus campos.
- errors.JoinVarias fallas a la vez, en un solo valor de error.
Tus propios errores
- Un tipo de error propioUn error struct carga datos, y puede decidir con qué coincide.
- El patrón MustPara valores que no pueden fallar en ejecución, mejor un panic al arrancar.
defer, panic y recover
- defer y limpiezaLimpieza garantizada, y cómo devolver un error desde un defer.
- defer, con precisiónLos defer corren de último a primero, con los argumentos evaluados de inmediato.
- panic y recoverPanic es para lo imposible; recover lo vuelve un error en una frontera.
- Resultados con nombreNombrar los resultados deja que una función diferida los edite a la salida.
Errores entre goroutines
- Errores desde goroutinesUna goroutine no puede retornar, así que el error viaja por un canal.
Bis
- retry.goReintentos con backoff, un plazo de contexto y errores que dicen qué pasó.