<!--
{
  "availability" : [
    "iOS: 13.0.0 -",
    "iPadOS: 13.0.0 -",
    "macCatalyst: 13.0.0 -",
    "macOS: 10.15.0 -",
    "tvOS: 13.0.0 -",
    "visionOS: 1.0.0 -",
    "watchOS: 6.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "Swift",
  "identifier" : "/documentation/Swift/CheckedContinuation",
  "metadataVersion" : "0.1.0",
  "role" : "Structure",
  "symbol" : {
    "kind" : "Structure",
    "modules" : [
      "Swift"
    ],
    "preciseIdentifier" : "s:ScC"
  },
  "title" : "CheckedContinuation"
}
-->

# CheckedContinuation

A mechanism to interface
between synchronous and asynchronous code,
logging correctness violations.

```
struct CheckedContinuation<T, E> where E : Error
```

## Overview

A *continuation* is an opaque representation of program state.
To create a continuation in asynchronous code,
call the `withCheckedContinuation(isolation:function:_:)` or
`withCheckedThrowingContinuation(isolation:function:_:)` function.
To resume the asynchronous task,
call the `resume(returning:)`,
`resume(throwing:)`,
`resume(with:)`,
or `resume()` method.

> Important: You must call a resume method exactly once
> on every execution path throughout the program.

Resuming from a continuation more than once is undefined behavior.
Never resuming leaves the task in a suspended state indefinitely,
and leaks any associated resources.
`CheckedContinuation` logs a message
if either of these invariants is violated.

`CheckedContinuation` performs runtime checks
for missing or multiple resume operations.
`UnsafeContinuation` avoids enforcing these invariants at runtime
because it aims to be a low-overhead mechanism
for interfacing Swift tasks with
event loops, delegate methods, callbacks,
and other non-`async` scheduling mechanisms.
However, during development, the ability to verify that the
invariants are being upheld in testing is important.
Because both types have the same interface,
you can replace one with the other in most circumstances,
without making other changes.

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)
