Я выполняю небольшую функцию, чтобы проверить error
для некоторых типов и решить (в зависимости от типа ошибки), стоят ли некоторые повторы.
Я создал свой собственный temporary
интерфейс для введите assert all net/http
ошибки, которые реализуют этот интерфейс (который, однако, не экспортируется, и поэтому я также объявляю его своим кодом)
type temporary interface {
Temporary() bool
}
Итак, я хочу повторить попытку при ошибке net / http реализации интерфейса temporary
, а также в случае, если ошибка относится к одному из следующих типов: io.EOF
, io.ErrUnexpectedEOF
из ErrTimeoutExceeded
, где
var ErrTimeoutExceeded = errors.New("timeout exceeded")
, однако следующее оператор switch
func isWorthRetrying(err error) bool {
switch e := err.(type) {
case temporary:
return true
case io.EOF:
return true
case io.ErrUnexpectedEOF:
return true
case ErrTimeoutExceeded:
return true
default:
return false
}
}
выдает ошибки во всех операторах (кроме одного типа, подтверждающего temporary
)
с ошибкой, например,
io.EOF ( ошибка типа) не является типом
Что это значит?