TypeScript Academy · Lektion

Begränsa fångade fel (unknown eller Error)

Hantera säkert fångade fel som är typade som unknown

Lektion 3 av 413 steg

Begränsa fångade fel (unknown eller Error) är en gratis lektion i TypeScript Academy på CoddyKit. Detta är lektion 3 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för TypeScript Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i TypeScript Academy innehåller totalt 4 lektioner.

Välkommen

Sedan TypeScript 4.0 är fångade fel av typen unknown. Det tvingar fram explicit typavgränsning innan felegenskaper används.

Ändringen i TS 4.0

TypeScript 4.0 introducerade useUnknownInCatchVariables. Fångade fel är av typen unknown i strict mode.
// err is now: unknown
try { doSomething(); }
catch (err) {
  // err.message; // Error — cannot access on unknown
}

Typavgränsning med instanceof

Använd instanceof Error för att komma åt felegenskaper på ett säkert sätt.
catch (err) {
  if (err instanceof Error) {
    console.error(err.message, err.stack);
  } else {
    console.error('Unknown error:', String(err));
  }
}

Typvakten isError

Skapa en återanvändbar type guard för att avgränsa feltyper.
function isError(e: unknown): e is Error {
  return e instanceof Error;
}
catch (e) {
  if (isError(e)) console.error(e.message);
}

Typavgränsning av anpassade fel

Avgränsa till anpassade feltyper i catch-block.
catch (err) {
  if (err instanceof NetworkError) { /* retry */ }
  else if (err instanceof AuthError) { /* redirect */ }
  else if (err instanceof Error) { /* generic */ }
  else throw err;
}

useUnknownInCatchVariables

Den här flaggan, som ingår i strict från och med TS 4.4, tvingar fram unknown för fångade fel.
{ "compilerOptions": { "useUnknownInCatchVariables": true } }

Strängfel

Viss kod kastar strängar i stället för Error-objekt. Hantera båda fallen.
catch (err) {
  const message = err instanceof Error ? err.message : String(err);
  console.error(message);
}

Hjälpfunktion för typade kast

Skapa en hjälpfunktion som alltid kastar ett typat Error.
function throwErr(msg: string, code = 500): never {
  const e: AppError = Object.assign(new Error(msg), { statusCode: code });
  throw e;
}

Kasta vidare okända fel

Kasta vidare fel som du inte kan hantera.
catch (err) {
  if (err instanceof KnownError) handle(err);
  else throw err; // propagate unknowns
}

Error boundaries i React

React error boundaries måste hantera okända fel från livscykelmetoder.
componentDidCatch(error: unknown, info: ErrorInfo) {
  if (error instanceof Error) logError(error.message);
}

Testa fångade fel

Testa felhantering med typade assertioner.
test('catches errors', async () => {
  jest.spyOn(api, 'fetch').mockRejectedValue(new NetworkError());
  const result = await safeRun();
  expect(result.ok).toBe(false);
});

Snabbtest

Vilken typ har ett fångat fel `err` i TypeScript 4.4+ strict mode?

Sammanfattning

Typavgränsning av fångade fel (unknown jämfört med Error): du har lärt dig de viktigaste koncepten inom området och hur de tillämpas i riktiga TypeScript-projekt.
Gratis att börja

Lär dig TypeScript med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
101
Lektioner
352

Vanliga frågor

Är lektionen ”Begränsa fångade fel (unknown eller Error)” gratis?

Ja – hela texten till ”Begränsa fångade fel (unknown eller Error)” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i TypeScript Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i TypeScript Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Begränsa fångade fel (unknown eller Error)”?

Hantera säkert fångade fel som är typade som unknown Ni övar på TypeScript Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig TypeScript Academy?

Du behöver inga förkunskaper. Utbildningen i TypeScript Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.

Hur lång tid tar lektionen ”Begränsa fångade fel (unknown eller Error)”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här TypeScript Academy-lektionen?

Ja. Varje TypeScript Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Typade felklasser och hierarkier
  2. Result-mönstret: Ok och Err
  3. Begränsa fångade fel (unknown eller Error)
  4. Felhantering i asynkron TypeScript-kod
← Tillbaka till TypeScript Academy