
- Next.js - Home
- Next.js - Overview
- Next.js - Project Setup
- Next.js - Folder Structure
- Next.js - App Router
- Next.js - Page Router
- Next.js Features
- Next.js - Pages
- Next.js - Data Fetching
- Next.js - ISR
- Next.js - Static File Serving
- Next.js - Pre-Rendering
- Next.js - Partial Pre Rendering
- Next.js - Server Side Rendering
- Next.js - Client Side Rendering
- Next.js Routing
- Next.js - Routing
- Next.js - Nested Routing
- Next.js - Dynamic Routing
- Next.js - Parallel Routing
- Next.js - Imperative Routing
- Next.js - Shallow Routing
- Next.js - Intercepting Routes
- Next.js - Redirecting Routes
- Next.js - Navigation and Linking
- Next.js Configuration
- Next.js - TypeScript
- Next.js - Environment Variables
- Next.js - File Conventions
- Next.js - ESLint
- Next.js API & Backend
- Next.js - API Routes
- Next.js - Dynamic API Routes
- Next.js - Route Handlers
- Next.js - API MiddleWares
- Next.js - Response Helpers
- Next.js API Reference
- Next.js - CLI Commands
- Next.js - Functions
- Next.js - Directives
- Next.js - Components
- Next.js - Image Component
- Next.js - Font Component
- Next.js - Head Component
- Next.js - Form Component
- Next.js - Link Component
- Next.js - Script Component
- Next.js Styling & SEO
- Next.js - CSS Support
- Next.js - Global CSS Support
- Next.js - Meta Data
- Next.js Advanced Topics
- Next.js - Error Handling
- Next.js - Server Actions
- Next.js - Fast Refresh
- Next.js - Internationalization
- Next.js - Authentication
- Next.js - Session Management
- Next.js - Authorization
- Next.js - Caching
- Next.js - Data Caching
- Next.js - Router Caching
- Next.js - Full Route Caching
- Next.js - Request Memoization
- Next.js Performance Optimization
- Next.js - Optimizations
- Next.js - Image Optimization
- Next.js - Lazy Loading
- Next.js - Font Optimization
- Next.js - Video Optimization
- Next.js - Script Optimization
- Next.js - Memory Optimization
- Next.js - Using OpenTelemetry
- Next.js - Package Bundling Optimization
- Next.js Testing
- Next.js - Testing
- Next.js - Testing with Jest
- Next.js - Testing with Cypress
- Next.js - Testing with Vitest
- Next.js - Testing with Playwright
- Next.js Debugging & Deployment
- Next.js - Debugging
- Next.js - Deployment
- Next.js Useful Resources
- Next.js - Interview Questions
- Next.js - Quick Guide
- Next.js - Useful Resources
- Next.js - Discussion
Next.js - unstable_rethrow() Function
The unstable_rethrow() Function
The Next.js unstable_rethrow()
function is used to avoid catching internal errors thrown by Next.js when attempting to handle errors thrown in application code. This function is useful for handling errors that are not caught by the Next.js error boundary.
Syntax
The syntax for the unstable_rethrow()
function is as follows:
import { unstable_rethrow } from 'next/error' export default function ErrorBoundary() { try { throw new Error('Something went wrong') } catch (error) { unstable_rethrow(error) } }
Parameters
The unstable_rethrow()
function accepts one parameter.
- error: The error object that you want to rethrow.
Return Value
The unstable_rethrow()
function does not return any value.
Key Points
- The unstable_rethrow() method should be called at the top of the catch block, passing the error object as its only argument. It can also be used within a .catch handler of a promise.
- The unstable_rethrow() method is only available in the Edge Runtime.
- Any resource cleanup (like clearing intervals, timers, etc) would have to either happen prior to the call to unstable_rethrow or within a finally block.
- If you ensure that your calls to APIs that throw are not wrapped in a try/catch then you don't need to use unstable_rethrow().
Example
In the example below, we are using the unstable_rethrow() function to rethrow an error that is thrown in the catch block of a promise. This will prevent the error from being caught by the Next.js error boundary.
import { notFound, unstable_rethrow } from 'next/navigation' export default async function Page() { try { const post = await fetch('https://.../posts/1').then((res) => { if (res.status === 404) notFound() if (!res.ok) throw new Error(res.statusText) return res.json() }) } catch (err) { unstable_rethrow(err) console.error(err) } }
Advertisements