typestar

Un tipo de error propio en Go

Un error struct carga datos, y puede decidir con qué coincide.

type HTTPError struct {
    Status int
    Cause  error
}

func (e *HTTPError) Error() string {
    return fmt.Sprintf("http %d: %v", e.Status, e.Cause)
}

func (e *HTTPError) Unwrap() error { return e.Cause }

func (e *HTTPError) Is(target error) bool {
    return target == ErrServerSide && e.Status >= 500
}

var ErrServerSide = errors.New("server side")

func classify(status int) bool {
    err := &HTTPError{Status: status, Cause: errors.New("boom")}
    return errors.Is(err, ErrServerSide)
}

Cómo funciona

  1. Error() con receptor por puntero es la elección habitual.
  2. Unwrap expone un error interno ante Is y As.
  3. Agregar un método Is deja que un error coincida con una categoría.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
21
Caracteres a escribir
475
Tokens
121
Ritmo de tres estrellas
105 tpm

Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 69 segundos.

Escribe este fragmento

Paso 1 de 2 en Tus propios errores; paso 8 de 15 en Errores.

← Anterior Siguiente →