Галерея миниатюр начальной загрузки - перемещение col-md-3 из одной позиции в другую

Начиная с go1.6, все ошибки от тайм-аутов должны соответствовать net.Error, если Timeout() установлен правильно. Все, что вам нужно проверить, это:

if err, ok := err.(net.Error); ok && err.Timeout() {

В старых версиях проверка на таймаут через http-пакет была более сложной.

  • Вы можете получить *net.OpError с Timeout (), если вы нажмете Deadline, установленный в базовом соединении.
  • Вы можете получить tlsHandshakeTimeoutError (который явно не экспортируется), который реализует интерфейс net.Error.
  • Вы можете получить url.Error, если в пакете url возникла проблема (таймаут во время начального соединения)
  • Вы можете получить сообщение об ошибке «использование закрытого сетевого подключения», если вы нажмете тайм-аут с http.Client.Timeout [go1.3 +] (который вызывает Transport.CancelRequest). Начиная с go1.5, это свойство будет правильно установлено свойство Timeout.

Вы можете проверить net.Error с помощью переключателя типа:

switch err := err.(type) {
case net.Error:
    if err.Timeout() {
        fmt.Println("This was a net.Error with a Timeout")
    }
case *url.Error:
    fmt.Println("This is a *url.Error")
    if err, ok := err.Err.(net.Error); ok && err.Timeout() {
        fmt.Println("and it was because of a timeout")
    }
}

С go & lt; 1.5 вам нужно будет проверить строку ошибки для таймаута http.Client:

if err != nil && strings.Contains(err.Error(), "use of closed network connection") {
    fmt.Println("Could be from a Transport.CancelRequest")
}
0
задан Johny D Good 16 January 2019 в 20:46
поделиться