Error Handling in Axios using `catch()`
Jun 10, 2020
Axios requests are promises, which means they have a then()
function for promise chaining, and
a catch()
function for handling errors. Below is how you can catch()
an error in Axios.
const err = await axios.get('https://httpbin.org/status/404').
catch(err => err);
err instanceof Error; // true
err.message; // 'Request failed with status code 404'
Axios' catch()
behaves exactly the same as the promise catch()
function. So you can use promise chaining, and add a catch()
at the
end to handle any errors that occur in the promise chain.
const err = await axios.get('https://httpbin.org/status/200').
// Will throw a TypeError because the property doesn't exist.
then(res => res.doesNotExist.throwAnError).
catch(err => err);
err instanceof TypeError; // true
You can also use catch()
to transform the error, just make sure you
rethrow the error afterwards.
let error;
try {
await axios.get('https://httpbin.org/status/404').catch(err => {
if (err.response.status === 404) {
throw new Error(`${err.config.url} not found`);
}
throw err;
});
} catch (err) {
error = err;
}
error.message; // "https://httpbin.org/status/404 not found"
You can also make Axios transform errors automatically using interceptors.
Did you find this tutorial useful? Say thanks by starring our repo on GitHub!