0Pricing
TypeScript Academy · Leçon

Affiner les erreurs interceptées (unknown ou Error)

Gérez en toute sécurité les erreurs interceptées et typées unknown

Affiner les erreurs interceptées (unknown ou Error) est une leçon TypeScript Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage TypeScript Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours TypeScript Academy comprend 4 leçons au total.

Bienvenue

Depuis TypeScript 4.0, les erreurs interceptées sont de type unknown. Cela impose une restriction explicite avant d’utiliser leurs propriétés.

Changement de TS 4.0

TypeScript 4.0 a introduit useUnknownInCatchVariables. En mode strict, les erreurs interceptées sont de type unknown.
// err is now: unknown
try { doSomething(); }
catch (err) {
  // err.message; // Error — cannot access on unknown
}

Restriction avec instanceof

Utilisez instanceof Error pour accéder aux propriétés des erreurs en toute sécurité.
catch (err) {
  if (err instanceof Error) {
    console.error(err.message, err.stack);
  } else {
    console.error('Unknown error:', String(err));
  }
}

Garde de type isError

Créez une garde de type réutilisable pour restreindre le type des erreurs.
function isError(e: unknown): e is Error {
  return e instanceof Error;
}
catch (e) {
  if (isError(e)) console.error(e.message);
}

Restriction des erreurs personnalisées

Restreignez le type aux erreurs personnalisées dans les blocs catch.
catch (err) {
  if (err instanceof NetworkError) { /* retry */ }
  else if (err instanceof AuthError) { /* redirect */ }
  else if (err instanceof Error) { /* generic */ }
  else throw err;
}

useUnknownInCatchVariables

Cette option, incluse dans strict depuis TS 4.4 et les versions ultérieures, impose le type unknown aux erreurs interceptées.
{ "compilerOptions": { "useUnknownInCatchVariables": true } }

Erreurs sous forme de chaînes

Certains codes lèvent des chaînes au lieu d’objets Error. Gérez les deux cas.
catch (err) {
  const message = err instanceof Error ? err.message : String(err);
  console.error(message);
}

Fonction utilitaire de levée typée

Créez une fonction utilitaire qui lève toujours une erreur Error typée.
function throwErr(msg: string, code = 500): never {
  const e: AppError = Object.assign(new Error(msg), { statusCode: code });
  throw e;
}

Relancer des erreurs inconnues

Relancez les erreurs que vous ne pouvez pas gérer.
catch (err) {
  if (err instanceof KnownError) handle(err);
  else throw err; // propagate unknowns
}

Limites d’erreurs dans React

Les limites d’erreurs React doivent gérer les erreurs inconnues provenant des méthodes du cycle de vie.
componentDidCatch(error: unknown, info: ErrorInfo) {
  if (error instanceof Error) logError(error.message);
}

Tester les erreurs interceptées

Testez la gestion des erreurs avec des assertions typées.
test('catches errors', async () => {
  jest.spyOn(api, 'fetch').mockRejectedValue(new NetworkError());
  const result = await safeRun();
  expect(result.ok).toBe(false);
});

Vérification rapide

Quel est le type d’une erreur interceptée `err` en mode strict dans TypeScript 4.4 et les versions ultérieures ?

Récapitulatif

Restriction des erreurs interceptées (unknown et Error) : vous avez appris les concepts clés de ce sujet et leur mise en pratique dans de vrais projets TypeScript.

Questions Fréquemment Posées

La leçon « Affiner les erreurs interceptées (unknown ou Error) » est-elle gratuite ?

Oui — le texte complet de « Affiner les erreurs interceptées (unknown ou Error) » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours TypeScript Academy, passe à CoddyKit PRO. Le cours TypeScript Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Affiner les erreurs interceptées (unknown ou Error) » ?

Gérez en toute sécurité les erreurs interceptées et typées unknown Tu pratiques TypeScript Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer TypeScript Academy ?

Aucune expérience préalable n'est requise. TypeScript Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.

Combien de temps prend la leçon « Affiner les erreurs interceptées (unknown ou Error) » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon TypeScript Academy ?

Oui. Chaque leçon TypeScript Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Classes et hiérarchies d’erreurs typées
  2. Motif Result : Ok et Err
  3. Affiner les erreurs interceptées (unknown ou Error)
  4. Gestion des erreurs dans le code TypeScript asynchrone
← Retour à TypeScript Academy