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

Функция context.Cause

Функция context.Cause возвращает причину отмены контекста. Она принимает один параметр - контекст ctx context.Context. Если контекст был отменен с указанием причины (через функции context.WithCancelCause, context.WithTimeoutCause или context.WithDeadlineCause), то Cause вернет эту причину (ошибку). Если контекст был отменен без причины, возвращается nil. Если контекст еще не отменен, функция также возвращает nil.

Синтаксис

cause := context.Cause(ctx)

Пример

Давайте создадим контекст с отменой по причине и получим эту причину с помощью context.Cause:

package main import ( "context" "errors" "fmt" ) func main() { ctx, cancel := context.WithCancelCause(context.Background()) cancel(errors.New("user cancelled")) cause := context.Cause(ctx) fmt.Println(cause) }

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

"user cancelled"

Пример

Если контекст отменен без указания причины, context.Cause возвращает nil:

package main import ( "context" "fmt" ) func main() { ctx, cancel := context.WithCancel(context.Background()) cancel() cause := context.Cause(ctx) fmt.Println(cause) }

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

<nil>

Пример

Для контекста с таймаутом и причиной функция вернет указанную ошибку:

package main import ( "context" "errors" "fmt" "time" ) func main() { ctx, cancel := context.WithTimeoutCause( context.Background(), 1*time.Millisecond, errors.New("operation timed out"), ) defer cancel() time.Sleep(2 * time.Millisecond) cause := context.Cause(ctx) fmt.Println(cause) }

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

"operation timed out"

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

  • функцию context.WithCancelCause,
    которая создает контекст с возможностью отмены по причине
  • функцию context.WithTimeoutCause,
    которая создает контекст с таймаутом и причиной отмены
  • функцию context.WithDeadlineCause,
    которая создает контекст с дедлайном и причиной отмены
  • функцию context.CancelCauseFunc,
    которая представляет функцию отмены контекста с причиной
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить