JavaScript:
Obsługa błędów

Jak to zrobić:

Oto klasyczny blok try-catch:

try {
  // Kod, który może spowodować błąd
  let result = potentiallyRiskyOperation();
  console.log('Sukces:', result);
} catch (error) {
  // Co zrobić, gdy zostanie rzucony błąd
  console.error('Ups:', error.message);
}

Przykładowe wyjście, gdy nie wystąpi błąd:

Sukces: 42

A kiedy pojawi się błąd:

Ups: Coś poszło nie tak

Dla kodu asynchronicznego, gdzie używane są promisy, użyj try-catch w funkcji async:

async function fetchData() {
  try {
    let data = await fetch('https://api.example.com/data');
    console.log('Dane pobrane:', data);
  } catch (error) {
    console.error('Błąd pobierania danych:', error.message);
  }
}

fetchData();

Wgłębienie się

Obsługa błędów w JavaScript przeszła ewolucję. Dawniej (ES3, około 1999 roku), mieliśmy tylko blok try-catch. Nie był super elastyczny, ale dawał sobie radę.

ES6 (2015) wprowadziło Promisy i dostarczyło nam .then() i .catch(), pozwalając na bardziej eleganckie radzenie sobie z błędami asynchronicznymi.

fetch('https://api.example.com/data')
  .then(dane => console.log('Dane pobrane:', dane))
  .catch(error => console.error('Błąd pobierania danych:', error.message));

Jeśli chodzi o szczegóły implementacji, kiedy błąd jest rzucany, silniki JavaScript tworzą obiekt Error z przydatnymi właściwościami takimi jak message i stack. Możesz także stworzyć własne typy błędów przez rozszerzenie klasy Error – przydatne dla bardziej złożonych aplikacji.

Alternatywy? Można ignorować obsługę błędów (zły pomysł), używać funkcji zwrotnych z pierwszym parametrem błędu (witaj, styl Node.js) lub zafascynować się bibliotekami i frameworkami, które oferują własne podejścia.

Zobacz również

Więcej o obsłudze błędów: