JavaScript:
Virheiden käsittely

Kuinka tehdä:

Tässä on klassinen try-catch lohko:

try {
  // Koodi, joka voi aiheuttaa virheen
  let tulos = mahdollisestiRiskialtisToiminto();
  console.log('Onnistui:', tulos);
} catch (virhe) {
  // Mitä tehdä, jos virhe tapahtuu
  console.error('Hups:', virhe.viesti);
}

Esimerkkituloste, kun virhettä ei tapahdu:

Onnistui: 42

Ja kun virhe tapahtuu:

Hups: Jotain meni pieleen

Asynkroniselle koodille, jossa on käytössä promiset, käytä try-catch lohkoa async funktion yhteydessä:

async function haeTietoja() {
  try {
    let data = await fetch('https://api.example.com/data');
    console.log('Tiedot haettu:', data);
  } catch (virhe) {
    console.error('Datan hakuvirhe:', virhe.viesti);
  }
}

haeTietoja();

Syväsukellus

Virheenkäsittely JavaScriptissä on kehittynyt. Aikanaan (ES3, noin 1999) meillä oli käytössämme vain try-catch lohko. Ei kovin joustava, mutta teki tehtävänsä.

ES6 (2015) toi mukanaan Promiset ja antoi meille .then() ja .catch() metodit, joiden avulla pystyimme käsittelemään asynkronisia virheitä sulavammin.

fetch('https://api.example.com/data')
  .then(data => console.log('Tiedot haettu:', data))
  .catch(virhe => console.error('Datan hakuvirhe:', virhe.viesti));

Toteutuksen yksityiskohdista puhuttaessa, kun virhe heitetään, JavaScript-moottorit luovat Error objektin, jolla on hyödyllisiä ominaisuuksia kuten viesti ja pino. Voit myös luoda omia virhetyyppejä laajentamalla Error luokkaa – kätevää monimutkaisemmissa sovelluksissa.

Vaihtoehtoja? Voisit jättää virheenkäsittelyn huomiotta (huono idea), käyttää takaisinkutsuja, joilla on ensimmäisenä parametrina virhe (terveisiä, Node.js tyyli), tai käyttää kehityskirjastoja ja -runkoja, jotka tarjoavat omia ratkaisujaan.

Katso myös

Lisätietoja virheenkäsittelystä: