TypeScript Academy · Lezione

Tipizzazione degli errori (unknown), restrizione nei blocchi catch

Tipizzi i parametri catch come unknown, quindi li restringa con instanceof/typeof o guardie personalizzate per gestire gli errori in sicurezza.

Lezione 2 di 38 passaggi

Tipizzazione degli errori (unknown), restrizione nei blocchi catch è una lezione TypeScript Academy gratuita su CoddyKit. Questa è la lezione 2 di 3. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento TypeScript Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso TypeScript Academy include 3 lezioni in totale.

Introduzione

Obiettivo: catturare gli errori come unknown e restringerne il tipo in modo sicuro. Userà instanceof, typeof e type guard personalizzati per leggere i dati degli errori senza sorprese.

unknown e instanceof

Inizi con unknown. Restringa il tipo con instanceof Error per accedere a message, stack e così via.

async function boom(): Promise<void> { throw new Error("boom") }

async function run() {
  try {
    await boom();
  } catch (e: unknown) {
    if (e instanceof Error) {
      console.error("Handled:", e.message);
    } else {
      console.error("Non-Error thrown:", e);
    }
  }
}

run();

typeof per i primitivi

Alcuni codici generano stringhe o altri valori primitivi. Usi typeof per restringere il tipo e gestire il caso in modo appropriato.

function throwString() { throw "bad" }

try {
  throwString();
} catch (e: unknown) {
  if (typeof e === "string") {
    console.warn("string error:", e.toUpperCase());
  } else {
    console.warn("other error", e);
  }
}

Guard personalizzato

Crei un user-defined type guard per riconoscere strutture “simili a errori” provenienti da diversi livelli.

type ErrorLike = { message: string; code?: string };

function isErrorLike(e: unknown): e is ErrorLike {
  return !!e && typeof e === "object" && "message" in e;
}

try {
  throw { message: "oops", code: "E_BAD" };
} catch (e: unknown) {
  if (isErrorLike(e)) {
    console.error(e.message, e.code ?? "no-code");
  } else {
    console.error("unknown error", e);
  }
}

Registrazione sicura

Centralizzi la gestione degli errori. Un piccolo helper restringe il tipo e registra l’errore in modo sicuro, evitando che la registrazione stessa causi arresti anomali.

function logErrorSafe(e: unknown): void {
  if (e instanceof Error) {
    console.error("Error:", e.message);
  } else if (typeof e === "string") {
    console.error("Error(string):", e);
  } else {
    try {
      console.error("Error(obj):", JSON.stringify(e));
    } catch {
      console.error("Error(unknown)");
    }
  }
}

try { throw { oops: true } } catch (e: unknown) { logErrorSafe(e) }

Suggerimenti

Suggerimenti:

  • Preferisca unknown in catch.
  • Restringa il tipo con instanceof, typeof o appositi guard.
  • Eviti di dare per scontato Error: il codice di terze parti può generare qualsiasi cosa.

Verifica della tipizzazione degli errori

Verifica rapida: perché è preferibile usare unknown in catch?

Riepilogo

Riepilogo: catturi gli errori come unknown, ne restringa il tipo con instanceof/typeof o guard personalizzati e centralizzi la registrazione sicura.

Gratis per iniziare

Impara TypeScript con un tutor IA — gratis

Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.

Corsi
101
Lezioni
352

Domande Frequenti

La lezione «Tipizzazione degli errori (unknown), restrizione nei blocchi catch» è gratuita?

Sì — il testo completo di «Tipizzazione degli errori (unknown), restrizione nei blocchi catch» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso TypeScript Academy, passa a CoddyKit PRO. Il corso TypeScript Academy include 3 lezioni in totale.

Cosa imparerò in «Tipizzazione degli errori (unknown), restrizione nei blocchi catch»?

Tipizzi i parametri catch come unknown, quindi li restringa con instanceof/typeof o guardie personalizzate per gestire gli errori in sicurezza. Eserciti TypeScript Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare TypeScript Academy?

Non è richiesta alcuna esperienza precedente. TypeScript Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 3.

Quanto tempo richiede la lezione «Tipizzazione degli errori (unknown), restrizione nei blocchi catch»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione TypeScript Academy?

Sì. Ogni lezione TypeScript Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Promise , tipizzazione di async/await
  2. Tipizzazione degli errori (unknown), restrizione nei blocchi catch
  3. Tipi dei pattern di concorrenza (all/settled/race)
← Torna a TypeScript Academy