Catching Errors Thrown by Rejected Promises
The Principle
Redux promise middleware dispatches an action for a rejected promise, but does not catch the error thrown. This is an expected behavior. Because the error is not caught, you will (in most cases) get an "uncaught" warning in the developer console. Again, this is an expected behavior.
By principle, it's your application's responsibility to catch the error thrown by the rejected promise. It's not the responsibility of the middleware.
How to Catch Promises
However, you probably want to catch the error. Here's some suggested approaches/solutions to this.
Catch/handle the error "globally" in error handling middleware
Catch/handle the error "locally" at the action creator
Catching Errors Locally
Generally, it'll make sense to use local error handling to directly control the "side effect(s)" of an error.
This can be done by dispatching some specific action. Here's an example of handling an error locally at the action creator.
Catching Errors Globally
In some cases, it might make sense to "globally" catch all errors or all errors of a certain action type. To give an example, you might want to show a alert modal whenever an error is thrown.
The unhandledrejection Event
Last updated