TypeScript:
Virheiden käsittely

Kuinka:

TypeScriptissä virheiden käsittelyyn kuuluu usein try, catch- ja finally-lohkot.

function riskyOperation() {
  throw new Error("Jotain meni pieleen!");
}

function handleErrors() {
  try {
    riskyOperation();
  } catch (error) {
    console.error("Kaapattu virhe:", error.message);
  } finally {
    console.log("Tämä suoritetaan aina, virheellä tai ilman.");
  }
}

handleErrors();

Esimerkkituloste:

Kaapattu virhe: Jotain meni pieleen!
Tämä suoritetaan aina, virheellä tai ilman.

Asynkroninen esimerkki lupauksilla (promises):

async function asyncRiskyOperation() {
  return new Promise((resolve, reject) => {
    // Simuloi virhettä
    reject("Täydellinen epäonnistuminen");
  });
}

async function handleAsyncErrors() {
  try {
    await asyncRiskyOperation();
  } catch (error) {
    console.error("Kaapattu asynkroninen virhe:", error);
  }
}

handleAsyncErrors();

Esimerkkituloste:

Kaapattu asynkroninen virhe: Täydellinen epäonnistuminen

Syväsukellus

Virheenkäsittely on ollut ohjelmoinnin kulmakivi sen alusta asti. TypeScriptissä, joka rakentuu JavaScriptin päälle, virheenkäsittely vahvistui async/await-toimintojen myötä, jotka otettiin käyttöön ECMAScript 2017:ssä. Sitä ennen me usein turvauduimme callback-funktioihin ja lupauksiin (promises) käsitelläksemme virheitä asynkronisessa koodissa.

Vaihtoehto try/catch:lle TypeScriptissä on käyttää virherajoja (error boundaries), joita tarjoavat kehykset, kuten React. Palvelimen puolella virheiden käsittelyssä voidaan käyttää välitysohjelmistoja (middleware) alustoilla, kuten Express.js, virheidenhallinnan keskittämiseksi.

Toteutuksen kannalta TypeScript ei omaa omaa virheenkäsittelymekanismiaan, vaan se käyttää JavaScriptin mekanismeja. Mukautetut virheluokat voivat laajentaa Error-luokkaa tarjotakseen kuvailtavampaa virhetietoa.

Katso Myös