Ce face app/error.tsx - Gestionarea erorilor neașteptate (Error Boundary)
Fișierul error.tsx creează un Error Boundary React care interceptează excepțiile neprinse din `page.tsx` sau din subrută.
Izolează problema: dacă o secțiune din pagină crapă, restul aplicației (antetul, meniul) rămâne perfect funcțional.
Fișierul trebuie să fie obligatoriu o componentă de client ('use client') pentru a putea gestiona evenimentul de resetare `reset()`.
Exemple
Exemplul 1: Afișarea unui mesaj de eroare cu opțiune de reîncercare
Permite utilizatorului să repete cererea dacă a fost o problemă temporară de rețea.
'use client';
import { useEffect } from 'react';
export default function Error({
error,
reset,
}: {
error: Error & { digest?: string };
reset: () => void;
}) {
useEffect(() => {
console.error('Eroare interceptată în pagină:', error);
}, [error]);
return (
<div className="p-6 bg-red-50 border border-red-200 rounded-lg">
<h2 className="text-xl font-bold text-red-700">Ceva nu a funcționat corect!</h2>
<p className="text-red-600 my-2">{error.message || 'Eroare neașteptată de server.'}</p>
<button
onClick={() => reset()}
className="px-4 py-2 bg-red-600 text-white rounded hover:bg-red-700"
>
Încearcă din nou
</button>
</div>
);
}
Ieșire în terminal
Interfață de recuperare afișată elegant fără căderea întregului site.
Greșeli frecvente
- Omiterea directivei ”use client”; Next.js va raporta eroare de compilare deoarece Error Boundaries necesită ciclu de viață React pe client.
Comenzi înrudite
app/not-found.tsx - Pagina personalizată 404 (notFound()): Randează interfața 404 atunci când este apelată funcția notFound() sau când o rută nu există.app/loading.tsx - Stări de încărcare instantanee (React Suspense): Afișează automat un ecran schelet (skeleton UI) sau indicator de progres în timp ce datele paginii sunt descărcate pe server.app/page.tsx - Definirea conținutului specific al unei rute: Fișierul special care face ca un segment de rută să fie accesibil public printr-un URL în browser.