РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
621 of 1593 menu

Функция os.IsTimeout

Функция os.IsTimeout проверяет, является ли переданная ошибка ошибкой таймаута. Она возвращает true, если ошибка связана с истечением времени ожидания операции, и false в противном случае. В единственный параметр функция принимает ошибку типа error, которую нужно проверить.

Эта функция полезна при работе с операциями ввода-вывода, которые могут завершиться по таймауту, например, при чтении из сетевого соединения или при работе с файлами в системах с ограничением времени выполнения операций.

Синтаксис

os.IsTimeout(err error) bool

Пример

Давайте проверим, является ли ошибка, возвращаемая при операции с таймаутом, ошибкой таймаута. Создадим кастомную ошибку, реализующую интерфейс net.Error с методом Timeout, возвращающим true:

package main import ( "fmt" "os" ) type timeoutError struct{} func (e timeoutError) Error() string { return "operation timed out" } func (e timeoutError) Timeout() bool { return true } func (e timeoutError) Temporary() bool { return false } func main() { err := timeoutError{} res := os.IsTimeout(err) fmt.Println(res) }

Результат выполнения кода:

true

Пример

Теперь давайте проверим, что обычная ошибка не считается ошибкой таймаута:

package main import ( "fmt" "os" ) func main() { err := fmt.Errorf("some error") res := os.IsTimeout(err) fmt.Println(res) }

Результат выполнения кода:

false

Пример

Рассмотрим реальный пример с использованием net.Dial и установкой таймаута. Если операция подключения завершится по таймауту, функция вернет true:

package main import ( "fmt" "net" "os" "time" ) func main() { conn, err := net.DialTimeout("tcp", "example.com:80", 1*time.Nanosecond) if err != nil { res := os.IsTimeout(err) fmt.Println(res) return } defer conn.Close() }

Результат выполнения кода (зависит от системы, но обычно):

true

Смотрите также

  • функцию os.IsNotExist,
    которая проверяет ошибку на отсутствие файла или директории
  • функцию os.IsExist,
    которая проверяет ошибку на существование файла или директории
  • функцию os.IsPermission,
    которая проверяет ошибку на недостаток прав доступа
  • тип os.PathError,
    который представляет ошибку, связанную с путем к файлу
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить