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
Error()con receptor por puntero es la elección habitual.Unwrapexpone un error interno ante Is y As.- Agregar un método
Isdeja que un error coincida con una categoría.
Palabras clave y builtins usados aquí
boolerrorfuncintreturnstringstructtypevar
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.
Paso 1 de 2 en Tus propios errores; paso 8 de 15 en Errores.