Skip to Content
🎉 Utilisez JS efficacement →

🚀 Gestion des erreurs (error.tsx) dans Next.js

Dans Next.js 13+ avec l’App Router, il est possible de gĂ©rer les erreurs de maniĂšre native grĂące au fichier error.tsx.
Contrairement Ă  pages/_error.js utilisĂ© dans l’ancien systĂšme, error.tsx est un React Client Component qui intercepte les erreurs sur une page ou une section spĂ©cifique.


1ïžâƒŁ Qu’est-ce que error.tsx ?

📌 Un fichier error.tsx permet d’afficher une interface alternative lorsqu’une erreur survient dans une page ou un layout.
📌 Il remplace la gestion manuelle des erreurs avec try/catch ou Error Boundaries.
📌 Il est spĂ©cifique Ă  un dossier :

  • app/error.tsx → S’applique Ă  tout le site.
  • app/dashboard/error.tsx → S’applique uniquement aux erreurs dans /dashboard.

2ïžâƒŁ Exemple d’un error.tsx global

📍 Ajout d’une gestion d’erreur pour tout le site

app/error.tsx
"use client"; // Obligatoire pour un error boundary import { useEffect } from "react"; export default function ErrorPage({ error, reset }: { error: Error; reset: () => void }) { useEffect(() => { console.error("Erreur détectée :", error); }, [error]); return ( <div className="flex flex-col items-center justify-center h-screen"> <h1 className="text-2xl font-bold text-red-600">Une erreur est survenue</h1> <p className="mb-4">{error.message}</p> <button className="px-4 py-2 bg-blue-500 text-white rounded" onClick={() => reset()} // Recharge la page > Réessayer </button> </div> ); }

💡 Explication :

  • ✅ use client est obligatoire, car error.tsx est un Client Component.
  • ✅ reset() permet de rĂ©essayer en rechargeant la page.
  • ✅ useEffect pour loguer les erreurs dans la console.

3ïžâƒŁ Exemple : Gestion des erreurs uniquement pour /dashboard

📍 Ajout d’un error.tsx spĂ©cifique pour /dashboard

app/dashboard/error.tsx
"use client"; export default function DashboardError({ error, reset }: { error: Error; reset: () => void }) { return ( <div className="flex flex-col items-center justify-center h-screen"> <h1 className="text-2xl font-bold text-red-600">Erreur dans le dashboard</h1> <p className="mb-4">{error.message}</p> <button className="px-4 py-2 bg-orange-500 text-white rounded" onClick={() => reset()} > RĂ©essayer </button> </div> ); }

📍 Ce fichier interceptera uniquement les erreurs dans /dashboard.


4ïžâƒŁ DĂ©monstration avec une page qui gĂ©nĂšre une erreur

📍 CrĂ©ons une page qui lĂšve une erreur volontairement

app/dashboard/page.tsx
export default function DashboardPage() { throw new Error("Erreur simulée dans le dashboard !"); return <h1>Tableau de bord</h1>; }

📍 RĂ©sultat :

  • 🚹 Lorsqu’un utilisateur visite /dashboard, Next.js affichera app/dashboard/error.tsx au lieu d’une erreur serveur.
  • 🔁 L’utilisateur pourra cliquer sur “RĂ©essayer” pour tenter de recharger la page.

5ïžâƒŁ DiffĂ©rence avec _error.js dans pages/

MĂ©thode❌ pages/_error.js (Ancien)✅ error.tsx (App Router)
Gestion automatique des erreurs❌ Non✅ Oui
Besoin d’un try/catch dans chaque page✅ Oui❌ Non
Scope de l’erreur🌍 Global uniquement✅ Global + Sections
CapacitĂ© de rĂ©essayer (reset())❌ Non✅ Oui
Meilleure expĂ©rience utilisateur⚠ Moyen✅ Oui

🎯 Conclusion : Pourquoi utiliser error.tsx ?

✔ Facile Ă  implĂ©menter → Plus besoin de try/catch partout.
✔ Modulaire → Peut ĂȘtre dĂ©fini globalement ou par section.
✔ ExpĂ©rience utilisateur amĂ©liorĂ©e → L’utilisateur peut rĂ©essayer facilement.

mis Ă  jour le