Метод context.Context.Err
Метод context.Context.Err возвращает ошибку,
которая объясняет причину, по которой контекст был
завершен. Если контекст еще не завершен, метод
возвращает nil. Метод не принимает никаких
параметров и возвращает ошибку типа error.
Синтаксис
err := ctx.Err()
Пример
Давайте создадим контекст с отменой и проверим ошибку после вызова функции отмены:
package main
import (
"context"
"fmt"
)
func main() {
ctx, cancel := context.WithCancel(context.Background())
cancel()
err := ctx.Err()
fmt.Println(err)
}
Результат выполнения кода:
"context canceled"
Пример
Давайте создадим контекст с таймаутом и проверим ошибку после истечения времени:
package main
import (
"context"
"fmt"
"time"
)
func main() {
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Millisecond)
defer cancel()
time.Sleep(20 * time.Millisecond)
err := ctx.Err()
fmt.Println(err)
}
Результат выполнения кода:
"context deadline exceeded"
Пример
Давайте проверим ошибку контекста, который еще не был завершен:
package main
import (
"context"
"fmt"
)
func main() {
ctx := context.Background()
err := ctx.Err()
fmt.Println(err)
}
Результат выполнения кода:
"<nil>"
Смотрите также
-
метод
context.Context.Done,
который возвращает канал для ожидания завершения контекста -
метод
context.Context.Deadline,
который возвращает время завершения контекста -
функцию
context.WithCancel,
которая создает контекст с функцией отмены -
функцию
context.WithTimeout,
которая создает контекст с таймаутом