Which method of a Promise handles rejection?

The story behind the answer

The Promise method that handles rejection is `.catch()`.

A call such as `promise.catch(onRejected)` registers a rejection handler and returns a new promise. It is shorthand for `promise.then(undefined, onRejected)`, so it handles failures from the original promise and from earlier steps in a promise chain. If the handler returns a value, the new promise usually becomes fulfilled with that value; if it throws, the new promise becomes rejected again.

The similarly named `Promise.reject()` does something different: it creates an already-rejected promise. It does not handle an existing rejection. `.then()` can handle rejection when given a second callback, but `.catch()` is the conventional and clearer form. `.finally()` runs cleanup after either fulfillment or rejection; it is not primarily a rejection-recovery method.

Promises became standard in ECMAScript 2015. A rejection without a handler may trigger the host environment’s unhandled-rejection reporting. In `async` functions, the comparable error-handling construct is `try...catch` around an `await` expression.

Source: Wikipedia · fact-checked Aug. 2026

Add question to a list

Choose a list to keep this question in: