JavaScript:
Hantering av fel

Hur man gör:

Här är den klassiska try-catch-blocket:

try {
  // Kod som kanske kastar ett fel
  let result = potentiallyRiskyOperation();
  console.log('Lyckades:', result);
} catch (error) {
  // Vad man ska göra om ett fel kastas
  console.error('Hoppsan:', error.message);
}

Exempelutskrift när inget fel inträffar:

Lyckades: 42

Och när det är ett fel:

Hoppsan: Någonting gick fel

För asynkron kod, där löften (promises) är inblandade, använd try-catch i en async-funktion:

async function fetchData() {
  try {
    let data = await fetch('https://api.example.com/data');
    console.log('Data hämtad:', data);
  } catch (error) {
    console.error('Fel vid hämtning av data:', error.message);
  }
}

fetchData();

Djupdykning

Felhantering i JavaScript har utvecklats. Förr i tiden (ES3, cirka 1999) hade vi bara try-catch-blocket. Inte superflexibelt, men det gjorde jobbet.

ES6 (2015) introducerade Löften (Promises) och gav oss .then() och .catch(), vilket tillät oss att hantera asynkrona fel mer smidigt.

fetch('https://api.example.com/data')
  .then(data => console.log('Data hämtad:', data))
  .catch(error => console.error('Fel vid hämtning av data:', error.message));

När det gäller implementationsdetaljer, när ett fel kastas, skapar JavaScript-motorer ett Error-objekt med användbara egenskaper som message och stack. Du kan också göra anpassade feltyper genom att utöka Error-klassen – praktiskt för mer komplexa appar.

Alternativ? Du kan ignorera felhantering (dålig idé), använda funktioner med fel-först-parametrar (hej, Node.js-stil), eller bli flådigare med bibliotek och ramverk som erbjuder sina egna lösningar.

Se även

För mer om felhantering: