---
title: useRouteError
new: true
---
# `useRouteError`
Inside of an [`errorElement`][errorelement], this hook returns anything thrown during an action, loader, or rendering. Note that thrown responses have special treatment, see [`isRouteErrorResponse`][isrouteerrorresponse] for more information.
This feature only works if using a data router, see [Picking a Router][pickingarouter]
```jsx
function ErrorBoundary() {
const error = useRouteError();
console.error(error);
return
{error.message}
;
}
}
loader={() => {
// unexpected errors in loaders/actions
something.that.breaks();
}}
action={() => {
// stuff you throw on purpose in loaders/actions
throw new Response("Bad Request", { status: 400 });
}}
element={
// and errors thrown while rendering
{breaks.while.rendering}
}
/>;
```
[errorelement]: ../route/error-element
[isrouteerrorresponse]: ../utils/is-route-error-response
[pickingarouter]: ../routers/picking-a-router