Skip to main content

Error Handling

Restate handles retries for failed invocations. By default, Restate does infinite retries with an exponential backoff strategy.

For failures for which you do not want retries, but instead want the invocation to end and the error message to be propagated back to the caller, you can return a terminal error.

You can return a terminal error with an optional HTTP status code anywhere in your handler, as follows:


return restate.TerminalError(fmt.Errorf("Something went wrong."), 500)

You can handle terminal errors instead of just returning them. For example, you can catch the terminal exception that comes out of a call to another service, and build your control flow around it.